3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

django rest framework とcsrf_exempt

Posted at

まずこちら
https://qiita.com/romgaran/questions/3fbf576fd34e8baf468f

Django 3.0
djangorestframework 3.13.1

もしかしたらこの問題は多くの方に気に留められないかもしれませんが、
検索してもわかりやすい回答が見つからなかった上に、質問コミュニティに出しても即答してくれる方がいなかったので、書き残しておきます。

djangorestframeworkは、デフォルトの状態でcsrf_exemptです。他のバージョンはちょっと確認してないですが。

これを知らずにログイン不要の投稿システムを作ってしまうと、余裕でCSRF攻撃ができてしまいますね・・・。
赤の他人サイト利用者のIPを使って爆破予告・・・とかしちゃうやつです。

APIViewを用いて、postで投稿を行う時はpostメソッドの上に@method_decorator(csrf_protect)を付けましょう。
何でも通してしまうので、もしかしたら気付かれないかもしれないですが、APIViewはデフォルトでCSRF免除のようです。

setting の MIDDLEWAREに、django.middleware.csrf.CsrfViewMiddlewareが設定されていたとしても、CSRF免除です(←ココ重要)

気付かない人はそのままガバガバAPI作るだろうし、知ってる人は普通にmethod_decoratorつけるのかなぁ。
まぁ、自分みたいに半端な知識でやってる人もいるだろうし、いつか自分みたいな人がいたら、

django rest framework とcsrfで検索してここにたどり着くといいなぁ、と思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?