-
跨站请求伪造(CSRF)原理
- 基本概念:
- CSRF 是一种常见的网络攻击方式。攻击者利用用户在被信任网站(如银行网站、社交平台等)的登录状态,通过欺骗用户访问恶意网站,在用户不知情的情况下,让用户的浏览器向被信任网站发送恶意请求。例如,攻击者制作一个看似无害的钓鱼网站,当用户访问这个钓鱼网站时,浏览器会携带用户在银行网站的登录凭证(如 Cookie),自动向银行网站发送转账请求。
- 攻击流程示例:
- 假设用户已经登录了网上银行系统。攻击者构造一个恶意 HTML 页面,其中包含一个隐藏的
<form>
标签,该标签的action
属性指向银行的转账接口,method
为POST
,并且攻击者在表单中设置了转账金额和收款账户等参数。当用户访问这个恶意页面时,浏览器会自动提交这个表单,由于用户在银行网站是登录状态,银行服务器会认为这是用户自己发起的合法转账请求,从而完成恶意转账。
- 假设用户已经登录了网上银行系统。攻击者构造一个恶意 HTML 页面,其中包含一个隐藏的
- 基本概念:
-
WAF 对 CSRF 防护的关键技术
- 验证请求来源:
- Referer 检查:WAF 可以检查请求的
Referer
头信息。Referer
字段表示请求的来源页面。正常情况下,用户在网站内的操作产生的请求,其Referer
应该是网站内部的页面。例如,银行网站的转账请求应该来自银行网站本身的页面,而不是外部的恶意网站。WAF 通过验证Referer
是否符合预期的域名范围,来判断请求是否可能是 CSRF 攻击。不过,这种方法有一定局限性,因为Referer
头信息可以被攻击者通过一些手段修改。 - Origin 检查:
Origin
头信息在跨域请求中更准确地表示请求的来源。WAF 可以利用Origin
头信息来验证请求是否来自合法的源。与Referer
不同,Origin
只包含请求的源域名,且不容易被篡改。在现代浏览器的跨域请求场景中,Origin
头信息被广泛使用,WAF 通过比较Origin
和网站的信任域名单,能够更精准地识别可疑的跨站请求。
- Referer 检查:WAF 可以检查请求的
- 令牌(Token)验证:
- 令牌生成与分发:网站在用户登录或进行重要操作(如转账、修改密码等)之前,会生成一个唯一的 CSRF 令牌,并将其嵌入到页面的表单或请求头中发送给用户。这个令牌通常是一个随机的、加密的字符串。例如,电商网站在用户添加商品到购物车的表单中,会插入一个隐藏的
CSRF - Token
字段,其值是服务器端生成的随机字符串。 - 令牌验证过程:当用户提交请求时,WAF 会检查请求中是否包含有效的 CSRF 令牌,并且验证令牌的合法性。服务器端会有一个存储和验证令牌的机制,只有当请求中的令牌与服务器端存储的、针对该用户会话的令牌相匹配时,才会认为请求是合法的。这样,即使攻击者能够构造恶意请求,由于没有正确的令牌,请求也会被 WAF 拦截。
- 令牌生成与分发:网站在用户登录或进行重要操作(如转账、修改密码等)之前,会生成一个唯一的 CSRF 令牌,并将其嵌入到页面的表单或请求头中发送给用户。这个令牌通常是一个随机的、加密的字符串。例如,电商网站在用户添加商品到购物车的表单中,会插入一个隐藏的
- Same – Site Cookie 属性应用:
- 属性原理:
Same - Site
是 Cookie 的一个属性,用于控制 Cookie 在跨站请求中的发送行为。当设置为Strict
时,浏览器只会在同站请求(即请求的来源和目标是相同的域名)中发送 Cookie;当设置为Lax
时,浏览器会在一些安全的跨站请求场景(如通过<a>
标签导航的GET
请求)中发送 Cookie。WAF 可以协助网站配置和强制使用Same - Site
属性,减少 CSRF 攻击利用 Cookie 的可能性。 - 实际应用场景:例如,对于银行网站的登录 Cookie,将其
Same - Site
属性设置为Strict
。这样,当用户访问外部恶意网站时,浏览器不会发送银行网站的登录 Cookie,从而有效防止 CSRF 攻击利用用户的登录状态进行恶意操作。
- 属性原理:
- 验证请求来源:
-
WAF 在 CSRF 防护中的优势与挑战
- 优势:
- 自动化防护:WAF 能够实时监控和拦截可疑的跨站请求,无需网站开发者手动编写大量复杂的验证代码。这大大提高了防护效率,尤其是对于大型网站或复杂的网络应用,能够快速有效地应对 CSRF 攻击。
- 集中管理与更新:企业或网站运营者可以通过 WAF 控制台集中管理 CSRF 防护策略。并且,WAF 厂商会根据新出现的攻击手段和安全漏洞,及时更新防护规则和算法,网站运营者只需更新 WAF 的配置,就可以获得最新的防护能力。
- 挑战:
- 误报问题:由于网络环境的复杂性和业务逻辑的多样性,WAF 在验证请求来源和令牌时,可能会出现误报的情况。例如,一些合法的跨域合作场景下的请求可能会因为验证规则过于严格而被误判为 CSRF 攻击。解决误报问题需要对 WAF 的规则进行精细调整,同时结合网站的具体业务需求进行定制化设置。
- 绕过技术:攻击者可能会尝试使用一些新技术来绕过 WAF 的 CSRF 防护。比如,利用浏览器的漏洞来篡改请求头信息,或者通过复杂的 JavaScript 代码来模拟合法的请求流程。为了应对这些绕过技术,WAF 需要不断地进行技术升级和安全研究,以保持其防护的有效性。
- 优势: