什么是跨站请求伪造 (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 时才会继续;攻击者无法代表用户采取行动,因为攻击者无法知道用户的唯一令牌。