作者:刘旭濠
跨域每个程序员都要掌握的一门知识,其实我一开始也不知道什么是跨域甚至是第一次听到好奇这是啥玩意(毕竟我还是小白一个)不过看了网上一堆资料虽然有点乱但是还是理解了一些,那么我来分享一下我的理解吧,那么什么是跨域,跨域就是指浏览器不能执行其他网站脚本,是对浏览器对JavaScript加的安全限制,为什么要限制呢,那就是怕CSRF攻击,至于CSRF攻击是什么接下来也会讲到的。
那么我就这样比较就是,如果你的a页面要获取b页面资源,但是两个页面的协议,域名,端口和子域名不同,就要进行跨域获取,这就是跨域,但是浏览器为了这个安全就限制了跨域访问,但是为什么要限制呢,之所以为什么要限制,那是因为为了安全问题,避免跨域请求可能被不法分子利用来发动CSRF攻击
那么什么CSRF攻击?
CSRF攻击就是跨站请求伪造,也称为one click attack/session riding,缩写为CSRF/XSRF,攻击者怎么进行攻击呢?就是在用户已经登录目标网站后,引诱用户访问一个攻击页面,利用网站对用户达到信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,从而达到攻击者目的
攻击的原理是这样的(大概吧):有两个网站,其中A网站是真实受信任的网站,而B网站是危险网站。在用户登陆了受信任的A网站是,本地会存储A网站相关的Cookie,并且浏览器也维护这一个Session会话。这时,如果用户在没有登出A网站的情况下访问危险网站B,那么危险网站B就可以模拟发出一个对A网站的请求(跨域请求)对A网站进行操作,而在A网站的角度来看是并不知道请求是由B网站发出来的(Session和Cookie均为A网站的),这时便成功发动一次CSRF 攻击也达到了目的,
CSRF 攻击也可以理解为就是攻击者盗用了你的身份,然后以你的名义发送而已请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账,然后简单说就是你的个人隐私信息泄露以及财产安全。所以大多数浏览器进行了跨域请求限制,这是从浏览器层面上的对 CSRF 攻击的一种防御,但是需要注意的是在复杂的网络环境中借助浏览器来防御 CSRF 攻击并不足够,还需要从服务端或者客户端方面入手防御,CSRF 攻击就说到这里要是想知道更详细CS