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