django rest api のcsrf_exempt
Q&A
Closed
Django 3.0
djangorestframework 3.13.1
を用いて、Axiosの通信でPost通信をしたのですが、どうもDrfはcsrf_exemptが強制されてるっぽいんですよね。
cookieを用いて勝手にcsrftokenを検証しているかどうかも確認してみましたが、そんなことはなく、
cookieを手動で削除してのaxiosのpostも成功。
挙げ句の果てには、2つのポートで同じdjangoサーバーを立てて、(127.0.0.1:8000と127.0.0.1:8001)
port8000側でフォームのページを開き、8001側のURLを指定して、post投稿!
これがなんと成功してしまったのです。当たり前っちゃ当たり前なのですが、
このまま本番サーバーで出してたらCSRF攻撃やり放題じゃないですか・・・。
普通にAPIView使って実装してるのに、いいんですかね、こんなの。
の144行目にはっきりcsrf_exemptと指定してありました。
もしかすると、DrfのPOST投稿でSaveを行うのは非推奨なんですかね?おかしい気がするのですが・・・。
ここをどうにかcsrf_protectにすることって、できますでしょうか。
あんまり変な修正加えるくらいなら、drf使わずに実装すべきじゃないか、と考えています。
0