提问人:davidm_uk 提问时间:10/12/2023 更新时间:10/13/2023 访问量:61
跨站点请求伪造防护:对同步器令牌模式使用 cookie
Cross-Site Request Forgery Prevention: using a cookie for the Synchronizer Token Pattern
问:
用于 CSRF 预防的同步器令牌模式的 OWASP 描述(此处)指出:
对于同步令牌模式,不应使用 cookie 传输 CSRF 令牌。
我的理解是,这是指将 CSRF 令牌从服务器传输到客户端。(我知道 CSRF 令牌必须以隐藏的表单字段或自定义标头值从客户端发送到服务器。
使用 cookie 将 CSRF 令牌从服务器传输到客户端会带来哪些安全风险?
OWASP备忘单继续说:
CSRF 令牌可以作为响应有效负载(例如 HTML 或 JSON 响应)的一部分传输到客户端。
如果服务器在响应客户端对 CSRF 令牌的请求时仅验证会话 ID(由会话 cookie 的存在确定),这肯定会完全绕过保护,因为攻击者可以在发送 CSRF 令牌以验证后续请求之前发出跨站点请求以检索 CSRF 令牌?
答:
1赞
davidm_uk
10/13/2023
#1
从我与Heiko的讨论中(谢谢),我得出结论:
同步器令牌模式不鼓励使用 cookie 将 CSRF 令牌从服务器发送到 cookie,因为使用 cookie 没有特别的理由,但存在潜在的缺点:
- 将令牌放在 cookie 中将导致它与每个请求一起发送,从而增加泄露的风险。
- 如果服务器实现不正确地检查 cookie 中是否存在 CSRF 令牌,则会完全破坏该机制。(服务器必须在请求正文或自定义标头中检查CRSF令牌。
跨域资源共享 (CORS) 可防止攻击者请求 CRSF 令牌。CORS 提供额外的保护,如果服务器设置了标头,则禁止发送凭据(例如会话 cookie)。
Access-Control-Allow-Origin: *
评论
Access-Control-Allow-Origin