web-dev-qa-db-ja.com

Codeigniter CSRF-仕組み

最近、CSRF攻撃について知り、CSRF保護がCodeigniter v 2.0.0に追加されたことを知ってうれしく思いました。

私はこの機能を有効にし、トークンを含む非表示の入力がフォームに追加されていることを確認しました。また、トークンもセッションに格納すると想定しています。 POSTリクエストの場合、CIはトークンを自動的に比較しますか、それとも手動で行う必要がありますか?

19
CyberJunkie

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

37
Wesley Murch

このリンクを参照- フォームヘルパーまたは手動で使用されたCSRFトークン

この記事では、CSRFトークンを回避する方法について説明しています

  • フォームヘルパーで開くフォームform_open()関数
  • ajax形式で
  • ajax/jqueryシリアル化フォーム

この記事では、「特定のURLのCSRFを無効にする方法(WebサービスのURLとして使用されるもの)」についても説明しています。

3
anil

Csrf保護が有効なセキュリティクラスがこのトークンを自動的にチェックするとき(POSTトークンをCOOKIEトークンと比較します)

2
Jarek Tkaczyk