【问题标题】:prevent invisible form from being easily hacked防止隐形形式被轻易入侵
【发布时间】:2012-01-12 16:13:46
【问题描述】:

总结

如果一个表单设置为display:none,并且它的字段被javascript填充了一些随意的html代码,那么提交时需要什么样的数据清理/表单安全性?

背景

我正在使用 JQuery 插件 DataTables 重新格式化和显示按组小计的数据。除了美中不足之外,它的效果很好:通过TableTools 扩展名将表格导出为PDF(或其他形式)会产生原始格式,而不是分组和小计格式。在与 DataTables/TableTools 作者discussion 之后,我得出结论,我需要以不同的方式导出。

我制作了一个按钮,将修改后的表格 html 而不是原始 html 提交到使用 mpdf 创建 pdf 文件的 php 脚本。它通过填充一个“不可见”的表单然后提交它来做到这一点。效果很好。

但我担心提交 html 的不可见表单会让我很容易受到滥用。当输入是任意的时,确保 POSTed 输入是我所期望的最好方法是什么?

代码

<!--HTML-->
<button name='Make PDF' id='butPDF'/>

<form action='makepdf.php' method='post' name='mpdf' 
      id='mpdf' style='display:none'>
  <textarea name='pdf_html'></textarea>
</form>

//javascript
$(document).ready(function() {
  $('.datatable').dataTable( {
    //process table into desired format      
  });

  $('button#butPDF').onClick(
    function(){
       var html= get_my_stuff();//collect up the desired bits
       $('textarea[name="pdf_html"]').val(html);
       $('form#mpdf).submit();
    }
  );
});

<?php
include(_MPDF_PATH . "mpdf.php");

$html=$_POST['pdf_html'];
$stylesheet = file_get_contents(LOCAL_INCLUDE.'css/mpdf.css');

$mpdf=new mPDF();
$mpdf->WriteHTML($stylesheet,1,true);
$mpdf->WriteHTML($html, 2,false);
$mpdf->Output('myfile.pdf','D'); //D for download
exit;
?>

【问题讨论】:

    标签: jquery post datatables mpdf


    【解决方案1】:

    也许添加另一个表单域并检查是否也已填写。提交后查看是否填写,就知道表单被机器人强行填写了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      相关资源
      最近更新 更多