Access-Control-Allow-Origin: * 不安全吗?

Posted

技术标签:

【中文标题】Access-Control-Allow-Origin: * 不安全吗?【英文标题】:Is Access-Control-Allow-Origin: * unsafe? 【发布时间】:2014-01-28 22:47:12 【问题描述】:

我的应用程序的后端是一个提供 JSON 内容的 API。我发现需要应用以下响应标头,以便它允许来自任何地方的请求:

Access-Control-Allow-Origin: *

这不安全吗?

您如何创建公共 API 而不会遇到受限制的跨域源策略?我需要允许 GETPOST 对我的 API 端点的请求。

【问题讨论】:

【参考方案1】:

如果您想公开您的 API,则将 * 用于 Access-Control-Allow-Origin 实际上是必需的。它本质上是不安全的,即使指定域也可能会导致问题,因为任何人都可以很容易地欺骗 Origin 标头绕过您的白名单。

换句话说,使用* 并不比将域列入白名单安全。

相反,您需要确保采取其他安全措施,以确保请求根据需要得到适当授权——尤其是写入请求。

【讨论】:

感谢您的保证。您能否举例说明您所说的其他安全措施是什么意思?你的意思是清理数据库输入吗? @izolate 特别是我在谈论确保请求带有某种由 OAuth 或其他东西提供的身份验证令牌。

以上是关于Access-Control-Allow-Origin: * 不安全吗?的主要内容,如果未能解决你的问题,请参考以下文章

PHP没有按顺序执行

跨域请求被阻止 Symfony/AngularJS

C# MVC js 跨域

PHP Ajax 跨域问题最佳解决方案

PHP Ajax 跨域问题最佳解决方案

PHP Ajax 跨域问题最佳解决方案