初识CSRF跨站请求伪造

CSRF(Cross-site request forgery,跨站请求伪造)

也被称为“One Click Attack”或者 Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。

相比XSS(Cross Site Scripting, 跨站脚本攻击),XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站。相比XSS攻击,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

XSS容易发现,因为攻击者需要登录后台完成攻击。管理员可以看日志发现攻击者。‍‍‍‍‍而CSRF则不同,他的攻击一直是管理员自己实现的,攻击者只负责了构造代码。‍

CSRF的理解

攻击者 会伪造一个请求(这个请求一般是一个链接), 欺骗目标用户进行点击,利用目标用户的身份,以目标用户的名义执行攻击者想要达到的目的。

比如,当 A 进行转账100元操作时,A 点击“转账”按钮后,就会发出 HTTP 请求,类似于:
http://www.xxbank.com/pay.php?user=xx&money=100
而攻击者可以构造一个 url :
http://www.xxbank.com/pay.php?user=hack&money=100
如果用户 A 访问了攻击者给出的 url ,用户 A 的网页在 cookie 中保存了他的授权信息,并且此 cookie 没有过期,就会自动向 hack 账号转账100元,而且这只涉及用户 A 的操作,没有经过用户 A 的同意,也没有获取用户 A 的 cookie 或其他信息。

CSRF的常见特性:

依靠用户标识危害网站;
利用网站对用户标识的信任;
欺骗用户的浏览器发送HTTP请求给目标站点;
另外可以通过IMG标签会触发一个GET请求,可以利用它来实现CSRF攻击。

CSRF漏洞的危害:

以目标用户的名义发送邮件、发消息,盗取目标用户的账号,甚至购买商品、虚拟货币转账等等。。。都会泄漏个人隐私并威胁到目标用户的财产安全。

CSRF 攻击的条件:

1. 攻击者了解受害者所在的站点;
2. 目标用户已经登录了网站,能够执行网站的功能;
3. 目标用户在此网页cookie中保存了它的授权信息,并且cookie没有过期。
4. 目标用户访问了攻击者构造的 url 。

CSRF漏洞的防护

1. 对于web站点,将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在每个form中提供隐藏field)。 一种类似的方式是在form中包含秘密信息、用户指定的代号作为cookie之外的验证。
2. 添加验证码操作,增加与用户的互动。
3. 关键操作只接受POST请求。
4. 保持原有的参数不变,额外增加一个参数Token(两个随机字符串的hash应该可以满足)。Token是一次性的,每次成功后都更新Token。(个人理解 Token就像我们登录时的手机验证码,是一个随机信息)
5. 用户每次访问网站之后及时注销账户。

你可能感兴趣的:(知识点学习,csrf)