过度允许的CORS设置会导致CSRF吗?

过度允许的CORS设置会导致CSRF吗?,cors,csrf,same-origin-policy,Cors,Csrf,Same Origin Policy,我觉得每当我看到CORS上的文档时,建议只使用默认的访问控制允许源代码:配置。在我看来,这是一个完美的方式,使您的API现在容易受到CSRF攻击。解释是,同源策略是阻止浏览器中的XHR请求使API端点完全易受CSRF攻击的唯一方法,CORS本质上是SOP的旁路 我的逻辑是否合理,任何具有过度许可CORS设置的站点本质上都是将其后端API暴露于CSRF攻击之下?如果是这样的话,那么无论何时提出CORS,都应该明确提到这一点。允许所有来源当然不是最佳做法,但这并不一定使您受制于CSRF,除非您允许对

我觉得每当我看到CORS上的文档时,建议只使用默认的
访问控制允许源代码:
配置。在我看来,这是一个完美的方式,使您的API现在容易受到CSRF攻击。解释是,同源策略是阻止浏览器中的XHR请求使API端点完全易受CSRF攻击的唯一方法,CORS本质上是SOP的旁路


我的逻辑是否合理,任何具有过度许可CORS设置的站点本质上都是将其后端API暴露于CSRF攻击之下?如果是这样的话,那么无论何时提出CORS,都应该明确提到这一点。

允许所有来源当然不是最佳做法,但这并不一定使您受制于CSRF,除非您允许对传入请求使用cookie。要缓解CSRF,您需要:

  • 验证来源。通常在代码或配置中定义白名单。如果传入来源不在白名单中,请使用403状态代码拒绝请求
  • 通过令牌添加反CSRF支持。微软在ASP.NETMVC和WebAPI方面有很好的应用。基本上,令牌只是一个随机字符串,在每次请求时都会更改
  • 还考虑使用Cookie之外的其他东西来验证请求/用户。例如,考虑使用授权头提交的认证令牌的使用。


    我极力推荐一本侯赛因先生的书来学习更多关于CORS和缓解CSRF的知识。作者还创建了一个好的伙伴网站(enable cors.org),提供了示例和指向其他资源的链接。

    允许所有来源当然不是最佳做法,但这并不一定要求您遵守CSRF,除非您允许对传入请求使用cookie。要缓解CSRF,您需要:

  • 验证来源。通常在代码或配置中定义白名单。如果传入来源不在白名单中,请使用403状态代码拒绝请求
  • 通过令牌添加反CSRF支持。微软在ASP.NETMVC和WebAPI方面有很好的应用。基本上,令牌只是一个随机字符串,在每次请求时都会更改
  • 还考虑使用Cookie之外的其他东西来验证请求/用户。例如,考虑使用授权头提交的认证令牌的使用。

    我极力推荐一本侯赛因先生的书来学习更多关于CORS和缓解CSRF的知识。作者还创建了一个很好的伙伴网站(enablecors.org),上面有示例和指向其他资源的链接