我正在我们的应用程序框架中构建一个 CSRF 预防方法。除其他外,我使用OWASP 站点。
我们选择了OWASP CSRF 备忘单中描述的“双重提交 Cookie”预防措施
备忘单指出:
当用户对站点进行身份验证时,该站点应生成(加密强)伪随机值...
听起来用户必须先登录,然后才能生成 CSRF 令牌(又名“(加密强)伪随机值”)。
但是如何保护无需身份验证即可访问的表单?想想“忘记密码”和登录表单。
我认为文本应该是“当用户进入一个站点时,该站点应该生成一个(加密强)伪随机值......”
这也更容易实现,就像我通过以下方式所做的那样:
- 应用程序检索 GET 请求:生成 CSRF(会话)cookie(如果 cookie 尚未在请求中)
- (其他)应用程序检索非 GET(POST、PUT 等)请求:使用请求中的 CSRF 令牌验证 CSRF cookie。
我在这里错过了一个重要方面吗?