跳过XSRF-TOKEN检查是否有CORS请求?

时间:2019-05-29 05:33:42

标签: javascript security cors csrf x-xsrf-token

防止跨站点请求伪造(CSRF或XSRF)的常见模式是:

  1. 客户端向服务器发送(GET)请求。
  2. 服务器包括一个(非仅限HTTP的!)cookie XSRF-TOKEN,具有用于标识浏览器会话的加密安全令牌。还会将其发送到一个普通的会话cookie,例如JSESSIONID,它仅是http。
  3. 客户端在标头“ X-XSRF-TOKEN”中的所有后续非幂等请求中回显令牌。
  4. 仅当从X-XSRF-TOKEN标头读取的令牌与会话关联的令牌匹配时,服务器才接受这些请求。

但是,如果请求是在CORS之后跨域发送的,则上述操作是不可能的,因为(JavaScript)客户端无法从步骤2中检索Cookie的值,因为XMLHttp​Request​.get​AllResponse​Headers()会过滤出标头“ Set-Cookie ”(和“ Set-Cookie2”)。

我是否正确理解CSRF & CORS with AngularJS + Laravel,服务器应该完全跳过针对CORS请求的令牌检查?

合理性:该机制可防止单点攻击,这种攻击无法与CORS配合使用,因为在这种情况下您无法诱使浏览器执行飞行前检查。

编辑:如果为CORS请求关闭csrf保护是正确的解决方案,是否向Access-Control-Allow-Origin: *发送安全风险?换句话说,应该将允许的来源始终列入白名单吗?

顺便说一句,使用会话ID对请求进行身份验证。

0 个答案:

没有答案