は以下がどこdjango.middlewareを適用...これはDjangoのCSRF保護の仕組みですか?
、クッキーの初心者なのでCSRFとDjango(1.4を使用して)、私は間違って行くところ私は、これはそれがどのように動作するかで作ることができるものから、私を修正してください。 csrf.CsrfViewMiddlewareはMIDDLEWARE_CLASSESタプルに含まれています。
csrf_token
タグが含まれ、関連するビューがRequestContext
をテンプレートに渡す場合、ページを要求すると、Djangoには英数字の文字列を含む隠しフォームフィールドが含まれます。 Djangoはまた、ブラウザに、名前がcsrftoken
に設定されているクッキーを返し、値を同じ英数字の文字列に設定します。
フォーム提出を受信すると、Djangoは隠しフォームフィールドの英数字の文字列値とブラウザから受け取ったcsrftokenのCookieが一致するかどうかをチェックします。一致しない場合は、403の応答が発行されます。
CSRF攻撃は、iframeを含む悪意のあるWebサイトの形になる可能性があります。 iframeにはPOSTフォームとJavaScriptが含まれています。フォームのaction
属性が私のDjangoサイトを指しています。フォームは私のサイトで何か面倒なことをするように設計されており、JSはiframeがロードされたときにフォームを送信します。
ブラウザには、フォーム提出のヘッダーにcsrftoken
クッキーが含まれます。ただし、フォームには一致する英数字の文字列を含む隠しフィールドが含まれないため、403が返され、攻撃は失敗します。 iframe JSが正しいhidddenフォームフィールドを作成するためにcookieにアクセスしようとすると、ブラウザはそうしないようにします。
これは間違いありませんか?
私は間違ったことはありません。たぶん、他の人はそうするでしょうが、一般的にはあなたはそれを持っています。 – Zashas