我看到了跨域ajax调用的安全风险,
但我认为真正的问题是浏览器
自动发送到目标跨域的cookie。
那么,为什么浏览器不能在跨域的情况下不发送cookie呢js请求,而不是完全阻止该请求?
我希望我的问题有道理。
编辑:
发件人:https://en.wikipedia.org/wiki/Same-origin_policy
虽然这是真的,但JavaScript无法直接访问银行会话cookie,但它仍然可以向银行网站的会话cookie,本质上充当银行网站的普通用户。关于发送新交易,甚至银行网站的CSRF保护都没有效果,因为脚本可以简单地执行与用户执行相同的操作
所以假设我登录了facebook,同时访问了一个mslicious网站,该网站使用对facebook的跨站点请求来窃取有关我的信息,我的意思是,它能做到这一点的唯一原因是浏览器的请求中包含了合法的cookie,我错了吗?
您的想法很混乱。
cookie只是存储在客户端的缓存信息。简单地说,它是由浏览器管理的数据,以及特定浏览器是如何进行管理的。例如,IE将cookie存储在单独的文本文件中,Firefox使用单个文件,Crome使用SQLite3数据库。
我建议你阅读:为什么同源政策很重要?
您可以发送跨域的Get请求,有几种方法。我使用了一个添加所需标头的代理,或者只添加Jsonp。例如,在.net中,后者需要添加一个json格式化程序来获取json回调函数。
如果您与网页进行双向通信,则无需执行任何操作。您可以在服务器端管理状态,并根据自己的意愿执行服务器端的"推送"请求。在html5之前,您需要一些组件来实现这一点,例如:java applet、flash、silverlight或。。。。
我希望我的回答对你有意义。