2011-02-09 15 views
1

フォームにセキュリティを追加して攻撃を防ぐ方法を知りたいと思います。 Webで検索した過去数日から、私が採用できる方法論から、私は先に進む前にあなたのテイクを知りたいいくつかの解決策を見つけました。フォーム処理に関するいくつかの質問?

  1. XSS(クロスサイトスクリプティング)とクロスサイト要求偽造を防ぐには、フォームキーを含めることが常に良いですか?フォームデータを処理するための最良の方法です

    1. AJAX
    2. 置き、同じページの上部にあるフォーム処理コードやプロセスを$ _SERVER [「PHP_SELF」]を使用して
    3. フォームのアクションを別のページに設定し、そこからすべての値を処理します。
    4. 単一のPHPクラスファイルを使用してフォーム値を処理します。
  2. 私はフォームデータをフィルタリングまたはサニタイズできますか?

ここ

+0

http://www.freesoftwaremagazine。com/articles/book_review_pro_php_security – KomarSerjio

+0

クライアント側の検証はすべてうまくやっていますが、最終的には正しいことをクライアントに依存しています - 「名前」が空白でないようにする必要がある場合、これまでクライアントに何かを依頼したり、サーバー上のすべてを検証したりしないでください。 –

答えて

2

は私の通常のセットです、ありがとうございました。私は基本的にカスタムフレームワークを使用します。

I特定のデータを扱うセットアップモデル。たとえば、新しい従業員を作成する従業員フォームがあるとします。私には従業員モデルがあります。モデルには、データベースに新しい従業員を生成するために必要な値が指定されています。このモデルに値がない場合、そのモデルを保存しようとすると例外がスローされます。これは私の第2層の「入力検証」です。最初の層は、単純なJavaスクリプトフォームバリデータで、値が欠落していないことを確認します。

ページへの入力(GET、POST)のために、私はこれらの衛生を扱うクラスを持っています。それは$ _POSTと$ _GETの値をすべて反復し、それらをサニタイズします(mysql_real_escape_string、PHPのstripslashes)。

今、フォームデータをhtml .. phpで設定すると、フォームデータ "配列"を処理することができます。つまり、 "employee [name]"というフォーム入力があり、そのフォームを送信すると、 $ _POST ['employee'] ['name'] ...と書いてください。現在、各フォームには、モデルに必要な固有のフィールドがあります。私は単純にモデルを呼び出し、モデルデータを$ inputClass-> post( 'employee')(配列)に設定し、データを保存します。

私はこの一般的な方法を好みます。そのセットアップが速く、簡単で、安全で動作します。

編集:また、AjaxやJavascriptのようなものは贅沢です。これらのフォームを処理する必要はありません。ユーザーに簡単に追加できます。たとえば、JavaScriptが有効な状態で保留中の場合は、ページをリロードせずにフォームを検証できます。しかし、注意してください、あなたは常にPHPを介してフォームを検証する必要があります。

+0

私はフォームをどのように処理すべきか理解してくれました。ありがとうダルトン私は本当にあなたの考えに感謝します。 –

関連する問題