关注我们

跨站点请求伪造(CSRF)攻击

LzersLzers 安全文摘 2018-07-03 715301 0

什么是CSRF

跨站点请求伪造(CSRF),也称为XSRF,Sea Surf或会话骑马,是一种攻击媒介,它会诱使Web浏览器在用户登录的应用程序中执行不需要的操作。

成功的CSRF攻击可能对企业和用户造成破坏。它可能会导致客户关系受损,未经授权的资金转移,密码更改和数据窃取 - 包括被盗的会话cookie。

CSRF通常使用恶意社交工程进行,例如电子邮件或欺骗受害者向服务器发送伪造请求的链接。由于毫无防备的用户在攻击时通过应用程序进行身份验证,因此无法区分伪造用户的合法请求。

跨站点请求伪造(CSRF)攻击

CSRF示例

在执行攻击之前,犯罪者通常会研究应用程序,以使伪造的请求尽可能合法。

例如,一个100美元银行转账的典型GET请求可能如下所示:

GET http://netbank.com/transfer.do?acct=PersonB&amount=$100 HTTP / 1.1

黑客可以修改此脚本,以便将100美元转换为自己的帐户。现在恶意请求可能如下所示:

GET http://netbank.com/transfer.do?acct=AttackerA&amount=$100 HTTP / 1.1

坏的演员可以将请求嵌入到无辜的超链接中:

<a href="http://netbank.com/transfer.do?acct=AttackerA&amount=$100">阅读更多内容</a>

接下来,他可以通过电子邮件将超链接分发给大量的银行客户。那些在登录其银行账户时点击该链接的人将无意发起100美元的转账。

请注意,如果银行的网站只使用POST请求,则无法使用<a> href标记来构造恶意请求。但是,攻击可以通过自动执行嵌入式JavaScript的<form>标签提供。

这就是这种形式的外观:

 <body onload =“document.forms [0] .submit()”> <form action =“http://netbank.com/transfer.do”method =“POST”> <input type =“hidden”name =“acct”value =“AttackerA”/> <input type =“hidden”name =“amount”value =“$ 100”/> <input type =“submit”value =“查看我的照片!”/> </ FORM> </ BODY>

CSRF缓解方法

预防和缓解CSRF攻击有很多有效的方法。从用户的角度来看,预防是保护登录凭据并拒绝未经授权的角色访问应用程序的问题。

最佳做法包括:

  • 在不使用时注销Web应用程序

  • 保护用户名和密码

  • 不允许浏览器记住密码

  • 在登录到应用程序时避免同时浏览

对于Web应用程序,存在多种解决方案来阻止恶意流量并防止攻击。最常见的缓解方法之一是为每个会话请求或ID生成唯一的随机令牌。这些随后由服务器检查和验证。具有重复标记或缺失值的会话请求被阻止。或者,禁止与其会话ID令牌不匹配的请求到达应用程序。

双重提交Cookie是阻止CSRF的另一个众所周知的方法。与使用唯一标记类似,随机标记分配给cookie和请求参数。然后,服务器在授予对应用程序的访问权限之前验证令牌是否匹配。

虽然有效,但如果受保护的站点链接到外部URL,令牌可能会暴露在多个点上,包括浏览器历史记录,HTTP日志文件,记录HTTP请求的第一行和引用标头的网络设备。这些潜在的弱点使得令牌不是全面的解决方案。

使用自定义规则防止CSRF攻击

CSRF攻击的高度个性化阻碍了一种万能解决方案的发展。但是,可以采用自定义安全策略来防范可能的CSRF情况。

Incapsula专有的定制规则引擎IncapRules可让客户创建自己的安全策略。这些策略是使用直观的语法生成的,并且可以随时进行修改,从而增强了我们的默认Web应用程序防火墙配置。

使用IncapRules,您可以创建一个策略,根据您的HTTP引用链接头内容来过滤对敏感页面和函数的请求。这样做可以让请求从安全域的简短列表中执行。

这种方法完全对抗CSRF攻击的社会工程方面。它可以防止在安全边界之外执行恶意请求,而不管内容如何。

或者,您可以在“仅限警报”模式下运行规则,以追踪可能的漏洞利用企图,或者呈现提醒不注意用户的CAPTCHA。


版权声明

本文仅代表作者观点,不代表黑白网立场。
如文章侵犯了您的权利,请通过邮箱联系我们删除。
详情查看:版权纠纷
E-Mail:server@heibai.org

喜欢2发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址