2017-05-11 13 views
0

djangoフォームを使用するcsrfトークンでImがクリアされません。私は私のフォーム提出でこれを持っており、私はそれが動的に生成されることがわかります。私のセッションをfiddlerで取得し、そのトークンなしでフォームを送信しようとすると、403エラーが発生します。しかし、私が理解していないことは、同じトークンで必要なだけ多くのデータを提出するためにフィドラーを使用することができるため、このトークンが行うセキュリティを理解していないということです。誰かがあなたのフォームをハックすると、同じトークンを使うことができます。Djangoのcsrfトークンはどのように動作しますか?

トークンが常に一意であることを確認するための追加手順がいくつかありますか?

+0

フォームをハックしますか?このシナリオを説明してください! –

答えて

2

あなたのアプリはフォームを準備し、Djangoは現在のユーザーセッションにcsrfトークンを使用します。そのため、ハッカーは独自のログイン用に生成されたフォームのみをハックする可能性があります。

atackをエミュレートするには、フォームセッションを開き、何かを入力して、SECRET_KEYの設定を変更して、サーバーを再読み込みしてフォームデータを送信してみてください。

これで、csrfトークンがSECRET_KEYに依存するため、csrfエラーメッセージが表示されます。 docs

+0

私はロギングではなく、フォームの提出をサポートするために使っています。だからImテストでは、私が最初に提出したのと同じキーを使っています。もちろん、キーを削除したり変更したりすると失敗します。 – rocketdoctor

2

CSRF tokenのみensures that only forms that have originated from trusted domains can be used to POST data back

もっと読みます。したがって、フォームが送信するデータやデータのデータは検証されませんが、データが正当なドメイン(通常はサイト)のフォームから取得されるかどうかは検証されません。したがって、クロスサイトリクエスト偽造防止の名前。 docsから

CSRFトークンが

ユーザーがログインが「盗む」かなどFirebugは、クロームDEV ツールを使用してあなた自身トークンを変更するたびに変更されます。脆弱性ではありません。

攻撃者は、ユーザーのブラウザのCSRF Coo​​kieを盗むことはできません。

誰かが、これは脆弱である、あなたのcsrftokenクッキーに(man-in-the-middle攻撃やXSSを介して)アクセス権を持っている場合:

CSRF保護がman-で防ぐことはできません-the-middle攻撃、 HTTP Strict Transport SecurityでHTTPSを使用します。 XSSの脆弱性 は既に攻撃者にCSRFの脆弱性を許し、 ははるかに悪化しているため、サイトでは のHOSTヘッダーの妥当性チェックとサイト上でのクロスサイト スクリプトの脆弱性がないと想定しています。

関連する問題