最近、CSRF攻撃について知り、CSRF保護がCodeigniter v 2.0.0に追加されたことを知ってうれしく思いました。
私はこの機能を有効にし、トークンを含む非表示の入力がフォームに追加されていることを確認しました。また、トークンもセッションに格納すると想定しています。 POSTリクエストの場合、CIはトークンを自動的に比較しますか、それとも手動で行う必要がありますか?
CSRFトークンは、form_open()
関数が使用されている場合にのみ、非表示の入力としてフォームに追加されます。
CSRFトークンの値を持つCookieがSecurityクラスによって作成され、要求ごとに必要に応じて再生成されます。
_$_POST
_データが存在する場合、Cookieは入力クラスによって自動的に検証されます。ポストされたトークンがCookieの値と一致しない場合、CIはエラーを表示し、_$_POST
_データの処理に失敗します。
つまり、基本的にはすべて自動です。_$config['csrf_protection']
_で有効にし、フォームにform_open()
関数を使用するだけです。
私が見つけた良い記事はそれを非常によく説明しています: https://beheist.com/blog/csrf-protection-in-codeigniter-2-0-a-closer-look.html
このリンクを参照- フォームヘルパーまたは手動で使用されたCSRFトークン
この記事では、CSRFトークンを回避する方法について説明しています
form_open()
関数この記事では、「特定のURLのCSRFを無効にする方法(WebサービスのURLとして使用されるもの)」についても説明しています。
Csrf保護が有効なセキュリティクラスがこのトークンを自動的にチェックするとき(POSTトークンをCOOKIEトークンと比較します)