CSRF和XSS蠕虫的区别

首先我们要引入同源策略的概念

协议+域名+端口(scheme://domain:port)三个完全一致才叫同源!
例外: IE浏览器的同源是不包含端口号的,即端口号不一致也是属于同源!
而同源策略限制了B网站的JS代码获取A网站的Cookie等关键字段,但不限制获取其他资源如A网站的图片等发布性资源!

然后考虑为什么src属性请求不受同源策略的限制

==>也就是考虑要执行的脚本是如何判断他的来源的。

可以这么理解,谁请求了这个资源那这个资源的来源就是谁。
比如说A网站的当前HTML文件中有一个script标签,这个script标签的src属性请求了一个外网的js脚本,因为这个脚本是由A网站HTML文件嵌入的script标签发起请求获取的,因此这个脚本的来源是属于A网站的。
于是,script标签请求回来的资源与当前域是相同的域,因此不受同源策略的影响。

因此要绕过同源策略,就必须让script标签嵌入到A网站的html文件中!
XSS蠕虫就是这么实现的!因此B网站嵌入A网站的JS脚本会被不受限制地在A网站运行!

而CSRF是在钓鱼网站B上发起的链接,由于异源,因此B网站的JS代码无法获取A网站用户的token(同源的话就直接在响应包里拿了!),就无法利用XMLHttpRequest对象提取token值填入token字段了。服务端看到这个数据包的token值为空(拿不到)或者不正确(伪造),就校验不通过!于是就拦截了CSRF了!
这才是token能防止CSRF的真正原因!
注意:
<1> token应放在除了Cookie字段的其他地方,如放在GET请求头或者POST请求体中。因为你放在Cookie字段,浏览器会自动给你带上Cookie字段去请求,也就带上了token!
<2> token之所以要在响应包里拿,是因为每次操作后,服务端都会给你一个新的token,要你在下一次操作时使用,你要是不使用新的token,就认为你不是合法用户!

补充: A网站用户跟A网站通信时,浏览器是自动携带token字段的,因为存储在本地了!每次有新的token过来就自动本地更新!


华丽分割线
下面 
以B站点更改A站点登陆用户admin的密码为666为例:

构造GET请求包
<img src=http://siteA/xxx.php?username=admin&passwd=666>
(能向外请求发起请求的的属性都可以!不一定是src)
也可通过XMLHttpRequest对象构造任意GET数据包

构造POST请求包
<form action=http://siteA/xxx.php method=POST>
<input type="text" name="username" value="admin"/>
<input type="text" name="passwd" value="666"/>
</form>
<script>document.forms[0].submit();</script>
也可通过XMLHttpRequest对象构造任意POST数据包

思考

要是我在A网站注入了一个存储型XSS(同源JS运行无限制),是不是就能获取到token了。然后任意用户一进来就会触发该JS脚本,然后我获取token后,通过XMLHttpRequest对象构造任意数据包(包括Referer字段),是不是就能更改掉任意用户的密码为我想要的值呢?

这个思路其实就是XSS蠕虫的思路!
注意:传播XSS蠕虫是犯法的哦!

说白了:
跨站就是CSRF(Cross Site Request Forgery) ==> 捆住手脚
同站就是XSS蠕虫(Same Site Request Forgery) ==> 大展拳脚

补充

<1> 获取token:

https://blog.csdn.net/weixin_40736319/article/details/89397807

<2> 验证码好像也无解,或许是我不知道怎么利用XMLHttpRequest对象搞定验证码吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值