ジャンゴでCSRFトークンの検証の原則

私は、長年維持の庭のブログをやっ初心者ジャンゴがある場合には注意事項、使用のジャンゴ- csrftoeknについての記録ノート、ほとんどの公式サイト、およびすべてのフラスコと、後の作業の例を使用してコピーしました。ブログの公園もメンテナンスフリーではありません。私のブログには、以下のコメントを受けまでは、本当に私は困惑していた、と私は慎重にこの問題を研究しています。
1. Djangoはcsrfmiddlewaretokenの正当性を確認する方法ですか?
2.ページが、その後、リフレッシュされた値は、クッキーは、ログインCSRFトークンを繰り返されるたびに更新されますCSRFで<入力>更新されるたびに2 CSRFトークンの違いは何ですか?

 
image.png

CSRF(クロスサイトリクエストフォージェリの保護) 、 中国は、クロスサイトリクエストフォージェリと呼ばれます。
クライアントからの要求に対する最初の応答をDjangoの場合は、ランダムにサーバ側でトークンを生成します、我々はクッキーにトークンを置きます。POSTリクエストは、各時間は、トークンをもたらすある
ことCSRF攻撃を避けるために。

このようにそれは間違っていないようでしたが、コメントで3番目の質問は、ページを更新するたびに、フォームがトークン、およびトークンクッキーをリフレッシュするだけでログオンするたびに更新されます形成します。私はcsrftoken認証方法についての質問を得たが、私は、ドキュメントのいくつかの正式な解釈を読んだ後。

「csrfmiddlewaretoken」フィールド値、検証するときにだけ秘密ではなく、完全なトークンを、クッキー値の秘密と比較されますこれは、刻々と変化するトークンを使用できます。各要求は独自のトークンを使用することができるが、その秘密は、すべてに共通のまま。
このチェックはCsrfViewMiddlewareによって行われます。

それは公式文書になると、時にテストトークン、もし代わりにトークン全体を比較する、Cookieの値のような、唯一の秘密と秘密の比較。
私は順番に塩ストレージが、それによって検証することを確保するための質問、シングルサインオンで、トークン毎回変化の形を形成し、クッキートークン不便、ジャンゴを持っています。あなたは、ソースコードが表示されるまで。

def _compare_salted_tokens(request_csrf_token, csrf_token):
    # Assume both arguments are sanitized -- that is, strings of # length CSRF_TOKEN_LENGTH, all CSRF_ALLOWED_CHARS. return constant_time_compare( _unsalt_cipher_token(request_csrf_token), _unsalt_cipher_token(csrf_token), ) def _unsalt_cipher_token(token): """ Given a token (assumed to be a string of CSRF_ALLOWED_CHARS, of length CSRF_TOKEN_LENGTH, and that its first half is a salt), use it to decrypt the second half to produce the original secret. """ salt = token[:CSRF_SECRET_LENGTH] token = token[CSRF_SECRET_LENGTH:] chars = CSRF_ALLOWED_CHARS pairs = zip((chars.index(x) for x in token), (chars.index(x) for x in salt)) secret = ''.join(chars[x - y] for x, y in pairs) # Note negative values are ok return secret 

最初の32ビット暗号化されたトークンに続く塩トークン文字列であり、それはユニークな塩の秘密で復号することができます。
Djangoはこの要求が正当なものであるようにトークンやクッキーの形は、秘密を同じトークン秘密を解くことができることを確認します。
なぜときAJAX要求を説明するのも難しいことではありません、あなたはクッキーからのリクエストヘッダに付加トークンをピックアップする必要があります。

記事のジャンゴCSRFトークン検証原理についてのオンラインの多くがあり、彼らはCSRFトークンの構造と組成を知らないので、間違っている、私はその後、公式文書、ミドルウェア、CsrfViewMiddlewareをお読みください。第三レビューで立ち往生しました。ソースは前に理由を理解します。



著者:ゾウカビカビ
リンクします。https://www.jianshu.com/p/7fbb60001018
出典:ジェーン・ブック
著者によって予約ジェーンブックの著作権は、いかなる形で再現され、承認を得るために作者に連絡して、ソースを明記してください。

おすすめ

転載: www.cnblogs.com/saolv/p/10995646.html