什么是跨站请求伪造 (CSRF)?
跨站请求伪造
跨站点请求伪造(CSRF)是一种Internet漏洞利用,涉及受信任的网站用户发出未经授权的命令。与利用用户对网站信任的跨站脚本相比,CSRF利用网站对特定用户浏览器的信任。会话骑行或一键式攻击是同一件事的其他术语。
浏览器的“GET”命令通常用作CSRF中的漏洞利用点。为了向特定网站注入命令,CSRF使用HTML标签,如“IMG”。然后,该网站的特定用户既是主持人又是无意的帮凶。由于合法用户发送命令,因此网站通常不知道它正在受到攻击。攻击者可能会要求将资金转移到另一个帐户、提取更多资金或将资金发送到另一个帐户(在PayPal和类似网站的情况下)。
它是如何执行的?
CSRF攻击很难实施,因为它需要许多因素才能成功-
攻击者必须在攻击不检查引荐来源网址标头(标准)的网站或使用浏览器或允许引荐来源网址伪造的插件故障(罕见)的用户/受害者之间做出选择。
攻击者必须在目标网站上找到能够更改受害者电子邮件地址、更改登录凭据或转账的表单提交。
攻击者必须找出表单或URL上所有输入的正确值。如果其中任何一个被要求是攻击者无法准确猜测的秘密值或ID,则攻击将失败。
攻击者必须在受害者登录目标站点时将用户/受害者吸引到带有恶意代码的网页。
考虑人A,他同时浏览他的银行账户并在聊天室中聊天。攻击者(B人)发现A人也在聊天频道中登录了bank.com。B人诱使A人点击幽默图片的链接。“IMG”标签为bank.com的表单输入提供数据,这将把钱从A的账户转移到B的账户。如果bank.com在转移资金之前没有对A进行二次验证,则攻击将成功。
防止跨站请求伪造
用户侧-用户侧防护对上网体验无效;只需一次打开一个选项卡而不使用“记住我”功能即可实现预防。
在服务器端-CSRF令牌的使用是在服务器端实现CSRF保护的最流行的方法之一。CSRF令牌与用户的会话相关联,但不会自动提交。网站只有在收到有效的CSRF令牌和cookie时才会继续;攻击者无法代表用户采取行动,因为攻击者无法知道用户的唯一令牌。