【发布时间】:2015-06-09 20:21:57
【问题描述】:
我正在实现一个使用 API 密钥或 CSRF 令牌的 API。目标是让 Web 应用程序(受 CSRF 保护)或第三方应用程序(受 API 密钥保护)都可以使用它。
基本上对每个请求(全部通过 POST),我都会检查是否有 API 密钥。如果有一个有效的,那很好。如果没有,我想回退到验证 CSRF。
我可以调用一个函数来自己验证 CSRF 吗?视图本身是 @csrf_exempt,因为 API 密钥需要工作。
【问题讨论】:
-
您不需要检查每个请求,因为 CSRF 令牌应该只用于 POST 和 PUT 请求。其次,您无法验证 CSRF 令牌,除非您在每个请求上都生成它,并且您的验证是可选。 CSRF 令牌与 API 密钥不同。请说明为什么需要 CSRF。
标签: django django-csrf csrf-protection