use*_*567 6 asp.net security jquery cors
从2个不同的应用程序中,我能够发送交叉请求.虽然浏览器返回Cross-Origin错误,但我的服务器仍在接收并执行请求.例如,从远程站点,我可以调用跨域请求,
$.ajax({
xhrFields: {
withCredentials: true
},
data:{ my: 'a' },
url: 'http://MyApp/Page',
type: 'POST'
})
Run Code Online (Sandbox Code Playgroud)
我知道浏览器不会返回脚本响应,但我的服务器页面仍然执行.
假设一个无辜的用户登录了一个站点http://abc.com.此应用程序将接受插入记录的发布请求.当无辜的用户访问无辜的http://HackerSite.com时,http://HackerSite.com将能够通过Ajax 向http://abc.com发送POST请求.怎么避免这个?
你说的漏洞是CSRF但是是可以防范的。
您可以通过发送和检查标头来防止 POST 在 AJAX 请求之外提交(例如通过 HTML 表单)X-Requested-With: XMLHttpRequest。由于此标头不在安全列表中(没有CORS ) ,因此也无法通过 AJAX 跨域发送。
然而,过去有一些通过插件(例如 flash)的漏洞利用,其中可以设置通过浏览器无法实现的标头(例如Referer),因此为了防止这种情况,建议使用同步器令牌模式,该模式涉及在将验证隐藏字段以及所有破坏性请求的 cookie。我所说的破坏性是指更改、提交或删除内容的请求(即应该是 POST 的内容)。
欲了解更多信息,请参阅此处:http://www.html5rocks.com/en/tutorials/cors/
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |