前言
本文记录了博主CSRF跨站请求伪造漏洞的面试笔记。
一、CSRF的原理和危害
1.原理
CSRF是指:攻击者诱导受害者进入第三方网站,在第三方网站中向被攻击网站发送跨站请求,利用受害者在被攻击网站的登录凭证,绕过用户验证,冒充用户进行操作。
2.危害
CSRF的危害主要有:未授权操作,包括更改、提交、删除数据,更改应用配置,转账支付等操作。盗取用户身份的会话令牌或Cookie信息,冒充合法用户进行进一步的攻击。滥用用户权限,访问受限制的资源等。
二、CSRF的分类
CSRF根据请求方式分类可以分为GET型CSRF和POST型CSRF。
1.GET型CSRF
在GET型CSRF中,攻击者构造一个链接,该链接指向攻击者想要利用的目标网站,同时附加了恶意的查询参数。当用户点击这个恶意链接时,浏览器会向目标服务器发送一个GET请求,间接执行了攻击者的恶意参数。
2.POST型CSRF
在POST型CSRF中,攻击者需要诱导用户访问一个包含恶意表单的页面,用户访问时,表单自动提交,浏览器会向目标网站发送一个POST请求,其中包含了攻击者添加的数据。
三、CSRF的防御措施
参考链接:
面试题之 CSRF 攻击-阿里云开发者社区 (aliyun.com)
面试 07-安全问题:CSRF和XSS - 人心不古 - 博客园 (cnblogs.com)
- 其实抵御CSRF攻击的关键在于:在请求中放入攻击者所不能伪造的信息,所以现在大多数的方案是使用的 token,token 的防御机制是公认最合适的方案:
(1)后端随机产生一个 token,把这个token 保存到后端的这个 session 状态中;同时后端把这个token 发给前端页面;
(2)前端页面提交请求时,把 token 加入到请求体 body 或者自定义 HTTP 请求头里面,比如 Authorization,一起传给后端,这个 token 是不能放在 cookie 里面,放在 cookie 里面就有可能被黑客利用,就失去了用 token 的意义。
(3)后端验证前端传来的 token 与 session 是否一致,一致则合法,否则是非法请求,没有就是伪造的。
- 还可以通过header中的Referer字段,做请求来源限制:
Referer 指的是页面请求来源,只接受本站的请求,服务器才做响应;如果不是,就拦截。
四、CSRF常见的绕过方法
更改请求方法、删除token或发送空token、或者移除referer/origin字段。
五、CSRF、SSRF和重放攻击有什么区别
- CSRF的攻击发起点是受害者的浏览器,攻击者利用受害者的身份权限在目标网站上执行操作;
- SSRF的攻击发起点是目标服务器,攻击者利用目标服务器的功能发送恶意请求,通常针对内部资源或其他服务器;
- 而重放攻击的发起点是攻击者自身,攻击者捕获并重放合法的通信数据包以重复执行操作。
总结
以上为博主的CSRF面试笔记整理,持续更新。