如何预防 CSRF 攻击?

简介

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,是一种对网站的恶意攻击。

尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同。

XSS 利用的是站点内的信任用户,而 CSRF 则通过伪装成(假冒)站点内的信用用户,执行该用户不知情的操作。

与 XSS 攻击相比,CSRF 攻击往往不太流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS 更具危险性。

CSRF 攻击是在受害者毫不知情的情况下,以受害者名义伪造请求发送给受攻击站点,从而在受害者并未授权的情况下执行受害者权限下的各种操作。

CSRF 攻击的原理

CSRF 攻击的条件

  • 正常网站 A,存在 CSRF 漏洞;恶意网站 B,含有攻击性代码,用来对网站 A 进行攻击。
  • 正常网站 A,有两个用户:user01(受害者)和 user02(攻击者)。
  • user02(攻击者)清楚地了解网站 A,并创建了具有攻击性的网站 B。
  • user01(受害者)登录了网站 A 后,在自身的 session 未失效的情况下,访问了恶意网站 B。

CSRF 攻击的过程

  1. 用户 user01 通过浏览器访问正常网站 A,输入用户名和密码请求登录验证。
  2. 登录验证通过后,网站 A 保存 user01 的 session,并将对应的 cookie 返回给 user01 的浏览器。这样, user01 就可以在网站 A 执行自身权限下的各种请求(操作),比如取款、发表文章、发表评论等。
  3. 假如, user01 还未退出网站 A,在同一浏览器中,访问了恶意网站 B。
  4. 网站 B 是 user02 创建的,user02 清楚地知道网站 A 的工作模式。网站 B 通过攻击性代码访问网站 A(携带的是 user01 的 cookie),执行某些并非 user01 授意的操作。
  5. 网站 A 却并不知道这个恶意请求是从网站 B 发出的,因此,就会根据 user01 在网站 A 中具备的相关权限,执行权限下的各种操作。这样,就在 user01 不知情的情况下,user02 假冒 user01,执行了具备 user01 用户身份的操作。

CSRF 攻击实例

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值