[英]Handling Angular 2 csrf for cross origins
下面是我们应用程序的架构。
申请流程如下:
除了第 5 步之外,在身份验证服务器、代理和客户端上一切都按预期工作:
Angular 应该能够根据文档自动处理这个问题
{ provide: XSRFStrategy, useValue: new CookieXSRFStrategy('XSRF-TOKEN', 'X-CSRF-TOKEN')}
其中 angular 将能够获取[XSRF-TOKEN] cookie 的值并创建[X-CSRF-TOKEN]标头以及我们通过应用程序发出的每个请求。
虽然 & 当我使用不同的来源构建架构时,angular 无法从另一个来源读取 cookie。
我面临的这种方法的问题是,由于服务器在不同的域中,我无法通过 XSRFStrategy 提供程序读取 cookie。 有没有办法读取那个 cookie 的值?
如果不是,那么当前的架构是错误的,我需要在同一个域中构建[client]和[proxy] ,我避免了这种方法,因为我需要将表示层与任何后端代码分开。
所以,我的问题是如何针对这种情况实施 csrf 保护?
在您的端口中,您提到了“访问+刷新令牌”,这听起来像是您在使用 OAuth。 在跨域场景中,CSRF 通常根本不是问题。 如果您的客户端需要发送任何类型的 HTTP Header 进行身份验证,您可以安全地禁用 CSRF。
CSRF 攻击会使您的浏览器发送为 [API] 域存储的 cookie,并且通过一些黑客攻击,攻击者还可能发送“X-Requested-With: XMLHttpRequest”。 但是,如果您的 API 还需要“授权:不记名...”令牌,您可以放弃整个 CSRF 的麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.