跨域问题

2022-01-18  本文已影响0人  乘风破浪丶文鑫

所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:
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攻击

上一篇 下一篇

猜你喜欢

热点阅读