浏览器为什么要限制Ajax跨域?

l676331991 2012-08-06 09:24:30
弱弱地问一句,浏览器为什么要限制Ajax跨域?一直想不通在什么场合Ajax跨域有安全性问题,求点拨。
...全文
701 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
l676331991 2013-10-06
  • 打赏
  • 举报
回复
引用 9 楼 ckc 的回复:
限制跨域并不仅针对ajax 不管你用什么技术,跨域的操作就意味着A网站可以操作B网站的页面 这个有无穷的风险 凡是B网站上登录确认身份之后不需要进一步验证就可以操作的都有被A网站利用的可能
似乎有点明白了。 让我理一理。 假设,先假设浏览器没有限制跨域,A站的xhr请求B站的一个url,那么浏览器是要带上谁家的cookie一起请求呢?(每次http请求都要带上该站下的所有cookie)显然是B家的。假设B家的网站当前用户已经登录,那么cookie里自然记录下了sessionId相关的东西以标识当前用户的身份,那么本次xhr请求很easy的通过了身份认证,然后后果就是不堪设想的。 突然感觉明白了,不知道是不是这么想的。假如ajax允许跨域,A站的xhr请求B站的一个url,带的是B站的cookie,这里就存在冒用当前B站的用户身份的嫌疑,我想问题就在这里吧。
l676331991 2013-10-06
  • 打赏
  • 举报
回复
还能回帖么?我今天突然又想到这个问题,还是没有悟透。
引用 3 楼 aspwebchh 的回复:
打个比方 某个网站的某张页面被你写入了一些js ,这些js有些ajax操作 如果某个用户访问了这张页面,你的js就可以获得用户的某些信息(cookie,本地文件等)然后通过ajax发送回你的服务器。 这就是安全问题,信息泄漏
3楼,之前没想明白。但是突然想到,ajax限制跨域是为了避免xss的时候很方便就能偷走信息的话,那么,即使不用ajax,用一个iframe也能偷走信息啊。创建一个隐藏的iframe,然后src指向自己的域,在url里带上从cookie里偷到的东西。额,对,用一个script标签也可以。 所以封住ajax跨域,并不能防止xss盗走信息啊。这样说来,为什么要废掉ajax跨域的武功,我又糊涂了。。。
duu007 2012-08-06
  • 打赏
  • 举报
回复
为了网页安全
l676331991 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

不是说你客户端的安全,是人家网站的安全。人家的数据库凭什么要被外面的页面访问?玩意用户信息泄露怎么办?
[/Quote]

aspwebchh说的是重点。

你说的这个不是ajax要限制跨域的原因。试想,后端返回什么数据,完全由他的后端来决定。如果会发生信息泄漏,那是后端安全没做好啊。完全可以判断http请求的Referer来限制数据啊。

我是说,当初设计Ajax的时候,为什么限制了Ajax跨域?其原因是什么。
joybee007 2012-08-06
  • 打赏
  • 举报
回复
不是说你客户端的安全,是人家网站的安全。人家的数据库凭什么要被外面的页面访问?玩意用户信息泄露怎么办?
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用 1 楼 的回复:

你跨域请求人家的数据库数据你觉得安全吗?


很安全啊,如果需要用到第三方的数据接口,那必然是相信它提供的数据是安全的,否则,哪有人愿意在自己网站上放挂马的code?在使用跨域的场合,当然是跨到你相信的域里边去拿数据。

至于被跨域的域后端,我也想不出有什么不安全的。
[/Quote]
非公共的API,都会给特定的使用者唯一的私钥,来验证请求的合法性.
至于公共的API,都会限制你post的数据的容量
挨踢直男 2012-08-06
  • 打赏
  • 举报
回复
打个比方
某个网站的某张页面被你写入了一些js ,这些js有些ajax操作
如果某个用户访问了这张页面,你的js就可以获得用户的某些信息(cookie,本地文件等)然后通过ajax发送回你的服务器。 这就是安全问题,信息泄漏
l676331991 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

你跨域请求人家的数据库数据你觉得安全吗?
[/Quote]

很安全啊,如果需要用到第三方的数据接口,那必然是相信它提供的数据是安全的,否则,哪有人愿意在自己网站上放挂马的code?在使用跨域的场合,当然是跨到你相信的域里边去拿数据。

至于被跨域的域后端,我也想不出有什么不安全的。
joybee007 2012-08-06
  • 打赏
  • 举报
回复
你跨域请求人家的数据库数据你觉得安全吗?
ckc 2012-08-06
  • 打赏
  • 举报
回复
限制跨域并不仅针对ajax
不管你用什么技术,跨域的操作就意味着A网站可以操作B网站的页面
这个有无穷的风险
凡是B网站上登录确认身份之后不需要进一步验证就可以操作的都有被A网站利用的可能
l676331991 2012-08-06
  • 打赏
  • 举报
回复
好吧,结了,在3楼找到答案了。谢谢各位了!

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧