django での CSRF 保護については、何もわかりません。たとえば、悪意のあるサイトがあります。このサイトからcsrfで保護されたURLにget-requestを送信し、ページを解析してcsrf値を取得し、この値で投稿する問題は何ですか?
3 に答える
たとえば、悪意のあるサイトがあります。このサイトからcsrf保護されたURLにget-requestを送信し、ページを解析してcsrf値を取得し、この値で投稿する場合の問題は何ですか?
これを行うと、CSRF Cookieの対応するセッションが一致せず、リクエストが拒否されます。
また、 MitMの脆弱性を防ぐために、リファラーチェックはHTTPSリクエストに対してのみ実行されることに注意してください。
CSRF保護がどのように機能するかについての説明、およびMitM攻撃について具体的に説明するこのSOの質問については、このdjangowikiエントリを参照してください。
Django の CSRF の主な目的は、Django ドキュメント (https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#how-it-works) で説明されています。
これにより、Web サイトから作成されたフォームのみを使用して POST データを戻すことができます。
したがって、Cookie、リファラー、投稿された値など、いくつかのことをチェックします。また、これらすべての値をいつでも自由に変更できるわけではないという制限もあります。たとえば、AJAX 呼び出しで X-CSRFToken トークンと POST 値を設定できますが、ブラウザではリファラー ヘッダーをオーバーライドできません... urllib2 または同様のライブラリを使用して POST を成功させることができますが、これはページに POST するのと同じであるため、CSRF 保護の対象外です。繰り返しますが、CSRF は Cross Site Request Forgery を意味し、それが保護するものです。
REFERRER がチェックされます。REFERRER が正しい URL に対応している場合、POSTing データは無効です。