Web services CORS实际上如何防止安全问题?

Web services CORS实际上如何防止安全问题?,web-services,http,browser,cors,Web Services,Http,Browser,Cors,在阅读了大量来自MDN和CodeAcademy的文档后,我仍然不完全理解CORS握手实际上可以防止什么 我理解,该机制应保护浏览器不请求位于不同来源的资源,而无需进一步控制 此外,据我所知,访问控制决策由作为CORS请求目标的服务器进行全面评估。 例如,如果服务器使用访问控制允许来源标题(例如设置为*)进行回复,则允许浏览器处理该响应 这里有两个场景提出了我的问题: 如果我是一个邪恶的服务器开发人员,我会用 Access Control Allow Origin设置为*always,允许 浏览器

在阅读了大量来自MDN和CodeAcademy的文档后,我仍然不完全理解CORS握手实际上可以防止什么

我理解,该机制应保护浏览器不请求位于不同来源的资源,而无需进一步控制

此外,据我所知,访问控制决策由作为CORS请求目标的服务器进行全面评估。 例如,如果服务器使用访问控制允许来源标题(例如设置为*)进行回复,则允许浏览器处理该响应

这里有两个场景提出了我的问题:

如果我是一个邪恶的服务器开发人员,我会用 Access Control Allow Origin设置为*always,允许 浏览器来处理响应。 如果我是一个邪恶的人,无论发生什么都想访问资源,我会使用一个不实现CORS机制的定制web客户端。 这两种情况都提到了,我想知道COR真正能防止什么。我想知道拒绝来自禁止来源的请求并在响应中发送适当的HTTP状态(例如403禁止)是否更安全


也许我遗漏了什么,但如果有任何正确的提示,我将不胜感激。

针对您的观点:

CORS关注防止跨源访问。在这个场景中,假设您正在访问goodserver.com,他们将为您提供内容,因此他们是术语的来源。想必他们不会为你提供任何与evilserver.com对话的服务。请注意,CORS因此并没有试图阻止跨站点脚本编写——在这种脚本编写中,攻击者以某种方式将代码放在与evilserver.com通信的源代码上

CORS是在你的浏览器中实现的,所以作为一个邪恶的人,你需要编写一个浏览器并说服人们下载并运行它。然而,如果您编写一个本地应用程序,或者使用HTML表单,您就不会从CORS安全性中受益,这是对的

您的问题确实突出了CORS系统依赖于信任的地方,这一点值得记住

您可能会发现这一点很有帮助,因为他们会逐步完成这一过程:


谢谢你的回答。我不明白的是,作为一名服务器/服务开发人员,我为什么要提供响应,并将其评估留给浏览器。我想说,如果我不支持特定的源代码,我不会提供任何数据,只会提供带有错误代码的empy HTTP响应。