【发布时间】:2013-11-03 04:27:54
【问题描述】:
通过 2 个不同的应用程序,我能够发送跨组织请求。虽然浏览器返回 Cross-Origin 的错误,但我的服务器仍在接收和执行请求。例如,我可以从远程站点调用跨域请求,
$.ajax({
xhrFields: {
withCredentials: true
},
data:{ my: 'a' },
url: 'http://MyApp/Page',
type: 'POST'
})
我知道浏览器没有返回对脚本的响应,但我的服务器页面仍然执行。
假设一个无辜的用户登录了一个站点http://abc.com。此应用程序将接受 post 请求以插入记录。当无辜用户访问无辜http://HackerSite.com 时,http://HackerSite.com 将能够通过 Ajax 向http://abc.com 发送 POST 请求。如何避免这种情况?
【问题讨论】:
-
好问题。如果您对此有答案,如果您发布的话,我将不胜感激。
-
对于 WCF 服务,您可以在端点配置中将 crossdomainscriptaccessenabled 设置为 false。
-
您在提交表单时也会遇到同样的问题,不涉及 JavaScript。 CORS 规范的创建并未考虑到额外的安全性。相反,它允许您在没有 ajax 的情况下基本上执行您已经执行(跨域)的相同操作。 CORS 规范走得更远一些,因为它确保您的服务器甚至没有收到底层请求,如果您的服务器没有正确选择加入规范并且相同的请求无法跨域发送 sans ajax (比如说,通过表单提交)。最后一个概念称为预检。
标签: jquery asp.net security cors