【发布时间】:2010-09-13 18:25:57
【问题描述】:
Django 带有CSRF protection middleware,它会生成一个唯一的每会话令牌以在表单中使用。它扫描所有传入的POST 请求以获取正确的令牌,如果令牌丢失或无效,则拒绝该请求。
我想对一些 POST 请求使用 AJAX,但是说请求没有可用的 CSRF 令牌。这些页面没有<form> 可以挂钩的元素,我不想混淆将标记作为隐藏值插入的标记。我认为这样做的一个好方法是公开一个像 /get-csrf-token/ 这样的 vew 来返回用户的令牌,依靠浏览器的跨站点脚本规则来防止恶意站点请求它。
这是个好主意吗?是否有更好的方法来抵御 CSRF 攻击,同时仍然允许 AJAX 请求?
【问题讨论】: