2010-12-01 7 views
5

私は自分のサイトでCSRFの保護をテストしていますが、予期せぬことに気付きました。Django 1.2では{%csrf_token%} CSRF保護タグはまだ必要ですか?

私は{% csrf_token %}を私のフォームから削除しましたが、依頼は依然として機能しています。なぜ私はうまくいかない。私はソースを見て、トークンがまだ<form>要素のすぐ隣にあることを認識しました。フォームのIDを変更して、ソースを間違いなく更新していたことを確認しましたが、隠れた入力はまだ残っています。

私はDjango 1.2を使用しています。 {% csrf_token %}はまだ必要ですか?ドキュメントから

乾杯

リッチ

+1

さらに調査したところ、フォームに 'post'メソッドがあり、そうでない場合は{%csrf_token%}が挿入されているように見えます。非常に巧妙なDjango。自動保護。 – Rich

+0

これを回答として投稿し、それを受け入れます(あなた自身の回答を受け入れるには24時間待たなければならないかもしれません)。 –

答えて

2

:Djangoの1.1では

、テンプレートタグが存在しませんでした。代わりに、CSRFトークンを含むPOSTフォームを書き直した後処理ミドルウェアが使用されました。バージョン1.1以前のサイトをアップグレードする場合は、このセクションと下記のUpgrading notesをお読みください。

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method

4

は、より多くの調査の後、ない場合{% csrf_token %}は常にフォームがメソッドpostを持っている場合、挿入されず、表示されます。 Djangoからの非常に巧妙な自動保護。

+1

これは、ミドルウェアクラスに 'django.middleware.csrf.CsrfResponseMiddleware'を追加した場合にのみ起こると思います。これはもはや推奨されていません。 http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-methodを参照してください。 –

関連する問題