所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:
a.com 网站里,前台JS通过ajax将请求转发到 b.com 网站,这就是跨域,是被浏览所禁止的
为什么要有跨域限制?浏览器这么做是出于何种原因呢。
其实仔细想一想就会明白,跨域限制主要是为了安全考虑。因为我们发起的每一次HTTP请求都会带上请求地址对应的cookie;如果没有跨域限制,那么可以做如下CSRF攻击:
1、用户登录了自己的银行页面 mybank.com,mybank.com向用户的cookie中添加用户标识。
2、用户浏览了恶意页面evil.com。执行了页面中的恶意AJAX请求代码。
3、evil.com向mybank.com发起AJAX HTTP请求,请求会默认把mybank.com对应cookie也同时发送过去。
4、银行页面从发送的cookie中提取用户标识,验证用户无误,response中返回请求数据。此时数据就泄露了。
5、而且由于Ajax在后台执行,用户无法感知这一过程。
cookie:用户点击了链接,cookie未失效,导致发起请求后后端以为是用户正常操作,于是进行扣款操作;
token:用户点击链接,由于浏览器不会自动带上token,所以即使发了请求,后端的token验证不会通过,所以不会进行扣款操作;
小结:跨域限制主要用来防止CSRF攻击。
cookie和token都存在请求头header中,有什么区别,为什么建议使用token?
token不是为了防止XSS的,而是为了防止CSRF的;
CSRF攻击的原因是浏览器会自动带上cookie,而不会带上token;
什么是XSS攻击
利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,比如sql攻击







网友评论