前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跨站点请求伪造(CSRF)攻击

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

作者头像
C4rpeDime
发布2018-08-28 10:46:27
1.2K0
发布2018-08-28 10:46:27
举报
文章被收录于专栏:黑白安全黑白安全

什么是CSRF

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

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

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

跨站点请求伪造(CSRF)攻击 跨站点请求伪造(CSRF)攻击 黑帽艺术
跨站点请求伪造(CSRF)攻击 跨站点请求伪造(CSRF)攻击 黑帽艺术

CSRF示例

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

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

代码语言:javascript
复制
GET http://netbank.com/transfer.do?acct=PersonB&amount=$100 HTTP / 1.1

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

代码语言:javascript
复制
GET http://netbank.com/transfer.do?acct=AttackerA&amount=$100 HTTP / 1.1

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

代码语言:javascript
复制
<a href="http://netbank.com/transfer.do?acct=AttackerA&amount=$100">阅读更多内容</a>

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

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

这就是这种形式的外观:

代码语言:javascript
复制
 <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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-034,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是CSRF
  • CSRF示例
  • CSRF缓解方法
  • 使用自定义规则防止CSRF攻击
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档