为什么要有跨域限制

前端之家收集整理的这篇文章主要介绍了为什么要有跨域限制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作者:黄家兴
链接:https://www.zhihu.com/question/26376773/answer/244453931
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

了解完跨域之后,想必大家都会有这么一个思考,为什么要有跨域的限制,浏览器这么做是出于何种原因呢。其实仔细想一想就会明白,跨域限制主要是为了安全考虑。


AJAX同源策略主要用来防止CSRF攻击。如果没有AJAX同源策略,相当危险,我们发起的每一次HTTP请求都会带上请求地址对应的cookie,那么可以做如下攻击:

  1. 用户登录了自己的银行页面 mybank.commybank.com用户的cookie中添加用户标识。
  2. 用户浏览了恶意页面 evil.com。执行了页面中的恶意AJAX请求代码
  3. evil.commybank.com发起AJAX HTTP请求,请求会默认把mybank.com对应cookie也同时发送过去。
  4. 银行页面从发送的cookie中提取用户标识,验证用户无误,response中返回请求数据。此时数据就泄露了。
  5. 而且由于Ajax在后台执行,用户无法感知这一过程。


DOM同源策略也一样,如果iframe之间可以跨域访问,可以这样攻击:

  1. 做一个假网站,里面用iframe嵌套一个银行网站 mybank.com
  2. 把iframe宽高啥的调整到页面全部,这样用户进来除了域名,别的部分和银行的网站没有任何差别。
  3. 这时如果用户输入账号密码,我们的主网站可以跨域访问到mybank.com的dom节点,就可以拿到用户的输入了,那么就完成了一次攻击。

所以说有了跨域跨域限制之后,我们才能更安全的上网了。

原文链接:https://www.f2er.com/ajax/160427.html

猜你在找的Ajax相关文章