romgaran
@romgaran

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

django rest api のcsrf_exempt

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使って実装してるのに、いいんですかね、こんなの。

調べてみると、
https://github.com/encode/django-rest-framework/blob/71e6c30034a1dd35a39ca74f86c371713e762c79/rest_framework/views.py

の144行目にはっきりcsrf_exemptと指定してありました。

もしかすると、DrfのPOST投稿でSaveを行うのは非推奨なんですかね?おかしい気がするのですが・・・。
ここをどうにかcsrf_protectにすることって、できますでしょうか。

あんまり変な修正加えるくらいなら、drf使わずに実装すべきじゃないか、と考えています。

0

No Answers yet.

Your answer might help someone💌