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

什么是CSRF

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

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

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。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

Arp欺骗原理及Android环境下的检测方法

测试环境说明 网关: IP:172.20.150.1 mac:24050FCE53 靶机(手机): IP:172.20.150.20 mac:000822...

43510
来自专栏北京马哥教育

Zmap详细用户手册和DDOS的可行性

0x00 背景 Zmap是美国密歇根大学研究者开发出一款工具。在第22届USENIX安全研讨会,以超过nmap 1300倍的扫描速度声名鹊起。相比大名鼎鼎的nm...

44310
来自专栏pythonlove

DNS服务器的基础应用及主从同步

域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互...

2132
来自专栏Python数据科学

Python爬虫之模拟登录京东商城

首先感谢大家的大力支持,博主会持续更新精彩文章,分享更多技术干货。另外,最近在新建的QQ群中结识了一些朋友,气氛很好,大家互相分享技术内容,博主也从中收获了不少...

3932
来自专栏同步博客

CSRF攻击与防御

  CSRF的全名为Cross-site request forgery,它的中文名为 跨站请求伪造(伪造跨站请求【这样读顺口一点】)

2003
来自专栏Golang语言社区

Web 最常见安全知识总结

随着Web2.0、网络社交等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中,越来越多的应用都架设在Web平台上。Web业...

39512
来自专栏涤生的博客

长连接和心跳的那些事儿

心跳和长连接在一起介绍的原因是,心跳能够给长连接提供保活功能,能够检测长连接是否正常(这里所说的保活不能简单的理解为保证活着,具体来说应该是一旦链路死了,不可用...

1954
来自专栏微服务生态

论代码级性能优化变迁之路(一)

大家好,很久没有和大家一起讨论技术了,那么今天我将和大家一起探讨我负责的某项目的性能变迁之路。

882
来自专栏FreeBuf

32764端口后门重出江湖,影响多款路由器

在年初的时候已经发布关于秘密后门——“TCP 32764”的报道,利用该后门漏洞,未授权的攻击者可以通过该端口访问设备,以管理员权限在受影响设备上执行设置内置操...

2239
来自专栏Java后端技术

Maven install [WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 has been relocated to org.aspectj:a

  最近在给项目打包的时候,在控制台老是出现一行警告:[WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 ha...

841

扫码关注云+社区

领取腾讯云代金券