【安全】如何预防XSRF跨站请求伪造?

XSRF跨站请求伪造

场景:

  1. 你正在购物,看中某个商品,商品id是100
  2. 付费接口是xxx.com/pay?id=100,但没有任何验证
  3. 我是攻击者,我看中一个商品,id是200

我现在想干嘛呢?现在想让你去给我买。怎么办呢?

  1. 我向你发送一封电子邮件,邮件标题很吸引人
  2. 但邮件正文隐藏着<img src=xxx.com/pay?id=200 /> (id变为攻击者的商品)
  3. 你一查看邮件,就帮我购买了id是200的商品

为什么会这样呢?

很关键的原因:你现在正在购物,肯定已经登录了.com这个网站了,你登录这个网站之后你就会有用户信息了,我通过电子邮件给你发送<img src=xxx.com/pay?id=200 />图片访问的时候,其实你再以你的浏览器去访问的时候,不管你是通过什么域名下,只要是这个img里面可以访问xxx.com/pay?id=200这个网址的时候,你的用户信息以及带过去了。

为什么呢会把用户信息带过去了呢?

  1. 你已经在这个网站登录了
  2. Img发送的请求是可以跨域的,所以说你的信息就带过去了,所谓的信息就是Cookie(很重要)
  3. 带过去之后,因为你已经用户认证过了后,就可以买了。至于说是不是你帮我买这个商品,这个不重要,至少你的钱已经花了。后台可能会以为你买的这个商品,这个商品给你了,但这个商品并不是很喜欢,或者就认定是你自己购买的,就是钱你已经花了。至少后台可以为购物网站创造一个多少钱的销量。所以说这就是跨站请求的例子(现在不多见了)

XSRF的预防:

  1. 使用post接口(用img或者其他东西去攻击不了的,因为你想在post做跨域很麻烦,在post做跨域的话,是需要server端去支持的,server端没有支持是行不通的)
  2. 增加验证,例如密码,短信验证码,指纹等

猜你喜欢

转载自blog.csdn.net/weixin_43352901/article/details/107458126
今日推荐