我最近将一个网站从 Django 1.0 更新到 1.3。引入的更改之一是针对 CSRF 攻击的自动保护。在大多数情况下,这很好用,但我对客户端有一个问题,由于某种原因根本不接受 cookie。虽然拒绝此类客户注册或登录是可以的,但他们仍然应该能够使用例如联系表格。Django 拒绝所有没有 CSRF cookie 的 POST 请求,所以我每天都有几十个 CSRF 失败不是攻击,而是不接受 cookie 的合法客户端。
由于这是不可接受的,我的计划是修改 Django 的行为(通过扩展 CSRF 中间件),使其允许通过根本没有任何 cookie 的 POST 请求。我的理由是 CSRF 攻击利用会话 cookie 来伪造请求。但是无论如何都没有附加到请求的会话 cookie,因此在这种情况下不需要针对 CSRF 的保护。
那么,我的推理是否合理,或者我是否要在我的网站上撕下一个巨大的安全漏洞?