CSRF
0x00 CSRF简介
CSRF(Cross-site request forgery)跨站请求伪造,也被称为 One Click Attack 或者 Session Riding,是一种对网站的恶意利用。由于目标站点无 Token / Referer 限制,导致攻击者可以用户的身份完成操作达到各种目的。
攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件、发消息、甚至财产操作:转账、购买商品等)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份认证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
0x01 CSRF 攻击原理
1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A; |
0x03 修复方案
- 关键操作仅支持 POST 请求
- 验证码:每次用户操作要求用户输入验证码(严重影响用户体验)
- 检测 Referer :通过 Referer Check 用于监控 CSRF 的攻击 (不能阻止 CSRF 攻击)
- Token :添加 Token 来使攻击者无法构造出合法请求进行攻击
0x04 总结
CSRF 成功是由于攻击者可以构造出合法的请求,并且服务器无法确认攻击时来自于用户还是浏览器。针对上述操作只可以从两个方向解决:其一就是防止攻击者构造出合法请求,其二就是可以使服务器确定是用户还是攻击者发起的请求。
方向一:对请求的参数进行加密 / 不改变原有的请求参数,添加新的随机参数
方向二:进行二次验证,验证码 / 独立密码等。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.