2

概要

フォームが に設定されていてdisplay:none、そのフィールドに JavaScript によって任意の htmlコードが入力されている場合、送信時にどのようなデータ サニタイズ/フォーム セキュリティが必要ですか?

バックグラウンド

JQuery プラグインDataTablesを使用して、グループ別に集計されたデータを再フォーマットして表示しています。軟膏の1つの小さなハエを除いて、それはうまく機能します.TableTools拡張機能を介してテーブルをPDF(または他のフォーム)にエクスポートすると、グループ化および小計化された形式ではなく、元の形式になります. DataTables/TableToolsの作成者と話し合った結果、別の方法でエクスポートする必要があるという結論に達しました。

mpdfを使用してpdfファイルを作成するphpスクリプトに、元のhtmlではなく変更されたテーブルhtmlを送信するボタンを作成しました。これは、「非表示」フォームに入力してから送信することによって行われます。それはうまくいきます。

しかし、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;
?>
4

1 に答える 1

0

別のフォーム フィールドを追加して、それも入力されているかどうかを確認してください。送信後に入力されているかどうかを確認すると、フォームがボットによって強制的に入力されていることがわかります。

于 2012-01-12T16:39:50.800 に答える