CSRF理解和实战
目录
- 啥是CSRF攻击
- 写一个CSRF攻击
- 如何避免CSRF攻击
https://juejin.im/post/5bc009996fb9a05d0a055192):
- 受害者登录a.com,并保留了登录凭证(Cookie)。
- 攻击者引诱受害者访问了b.com。
- b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会…
- a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
- a.com以受害者的名义执行了act=xx。
- 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作
总结来说,攻击者没有窃取你的登录信息,但是利用你的登录信息,冒充你或者在你不知情的情况下发起了一个请求。这通常也不是你希望的。接下来我们写一个CSRF攻击小例子。
这里有你想要的小电影
如果你点击了,这时这个页面就会发起一个post请求,由于你可能登录了博客园,post时会带上你的登录cookie信息,从而就会触发csrf攻击,莫名其妙的给这篇文章点了一个赞,(一天后更新:今天获得5个赞,也不知道是CSRF的功劳,还是我写的好??,2021-03-29更新,这个接口已经404了)。
注意:实际点赞(点击右下角的推荐)的触发是基于ajax(xhrHttpRequest)实现的,提交的是json数据。但是在实际测试中发现,这个api也支持表单提交。
json的CSRF攻击似乎有点复杂,如果api不支持跨域,那么ajax请求会因为同源策略的限制而访问失败。
https://juejin.im/post/5bc009996fb9a05d0a055192)
这个就不详细讲了,大家可以参考掘金美团技术团队的那篇文章。
还有就是在服务端set-cookie时,带上SameSite属性,可以有效防止 CSRF 攻击。
(完)
参考:
- 前端安全系列之二:如何防止CSRF攻击?