2011-04-24 3 views
1

私はセッションとフォームにランダムトークンの値を保存することによって "フォームcrf攻撃"を防ぐ方法を作った、 "ポストアクション"私は2つの値を比較する..私はすべてのPHPページ、フォームcrf攻撃にはどのような処置が必要ですか?

私の質問は:比較プロセスが失敗し、トークンセッションの値とトークンの値が同じでない場合!それでは、スクリプトが実行しなければならないアクションは何ですか?スクリプトの作業を "die();"で止めることです。 ?または何が最善の処置ですか?

おかげで、

答えて

0

これは、実際のユーザーから起こることは非常にそうであれば、私は、任意のデータを返す/保存からスクリプトを防ぐためだろうが、それが働いたかのように私は「成功」のメッセージを返します。障害を返すと、ハッカーは検証がどのようにコード化されているかを調べることができます。

一方、これが実際のユーザーに発生した場合、私はフレンドリーなエラーを返し、おそらく再度ログインするように頼んでいます。

+0

@ Jason4Everあなたは最終的に何をしたのですか? –

0

はい。ただ失敗させてください。そのようなエラーを回復することには何の意味もありません。あなたはしかし、また、可能性を監査するためにログエントリを書き込みされて何をすべきか

は試みを活用:

syslog(LOG_ERR, "CSRF token mismatch ..."); 
die("Request failed. (Disabled cookies?) Contact administrator: ..."); 

それは本当に、ブラウザのエラーか何かだった場合はhumd可読メッセージを含めます。しかし、それが失敗したCSRFトークンであることを明らかにしないでください。

+0

良い、私はこのofcoursを行うが、問題はセッションのタイムアウトやユーザーが新しいタブを開いたときにトークンの値が変化するため、この問題が発生することが多い。新しいトークン値で新しいセッションを開始します。だから、そのアクションが普通の人の攻撃者であるかどうかは分かりません!! – Jason4Ever

+0

まあまあです。それはまったく異なる質問です。元の投稿を編集して反映させます。 - いずれの場合でも、CSRFトークン配列を使用するのが最善です。 '$ _SESSION [" csrf "] [] = $ new_token'と' in_array($ _ POST ["csrf"]、$ _SESSION ["csrf"]) 'をチェックするために使用します。セッションタイムアウトに関しては、何もできません。とにかくそれは一般的な問題ではありません。 – mario

関連する問題