跨站点请求伪造(CSRF)

1. 什么是CSRF

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

2. 案例分析

背景:某用户在正常转账时被CSRF攻击,账户余额被盗取

1)用户A 向银行发起转账请求 http://bank.com/transfer?from=a&to=b&amount=1000, 此时,服务器通过验证Session对A身份进行验证,A完成正常转账操作

2)黑客C也在同一家银行开设了账户,并向银行发起转账请求:http://bank.com/transfer?from=a&to=c&amount=1000, C身份验证失败,请求失败

3)此网站存在CSRF漏洞,黑客C发布了一个网页,网页中嵌入代码http://bank.com/transfer?from=a&to=c&amount=1000, 并诱导A点击此网址或图片,此时请求将从用户A的浏览器向银行发起请求,并附带有A的Cookie,A刚刚访问了银行网站,Session值尚未过期,浏览器的 cookie 之中含有 A 的认证信息

4)悲剧发生!通过用户A的浏览器向银行服务器发送的请求 http://bank.com/transfer?from=a&to=c&amount=1000 将会被执行,A账户中的钱款被转账至C账户

5)无法追溯及追责,银行日志显示确实有一个来自于A本人的合法请求转移了资金,没有任何被攻击的痕迹.

3. 防范措施

1)对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field),这将帮助网站防止这些攻击。一种类似的方式是在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2) 检查 Refer 字段。在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。通过校验关键的请求的中Referer字段(如银行转账请求),判断请求是来源自身站点的,视为合法请求。
3)确保没有XSS漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值