美文网首页
冒充用户转账(CSRF跨域请求伪造攻击)

冒充用户转账(CSRF跨域请求伪造攻击)

作者: 张云飞Vir | 来源:发表于2024-02-27 21:08 被阅读0次

跨站请求伪造(Cross Site Request Forgery), CSRF是一种网络攻击,欺骗受害者在登录状态下访问一个恶意网址,自动发送一个伪装成受害者请求来欺骗执行非法操作,从而实现攻击目的。

这个过程是怎么发生的呢?

(1)先要发现漏洞,比如某银行的网址是 http://bank.com,在登录后转账时的请求是: https://bank.com/transfer?account=pianzi&amount=1000
它表示要给 账号=pianzi的人转账1000元。知道了这个,下一步就是诱骗用户不知不觉中发起这个网络请求。
(2)这时骗子做了个娱乐网站,这个网站一打开就自动发起上面那个转账请求。
(3)受害者可能被诱骗进入了网站。或者被聊天工具发来了一个图片或者链接,一点击,就不知情的触发了请求,钱就跑到pianzi的账号里 去了。

这个过程有什么特点?

(1) 攻击一般发生在第三方网站,而不是有漏洞的那个网站;
(2) 攻击利用用户在被攻击网站的登陆凭证(cookie),冒充受害者提交操作,而不是直接窃取数据;
(3) 整个过程,攻击者并不能获取到登录凭证,而是冒用;
(4) 跨站请求可以用各种方式:img图片的src、a标签、form表单提交等等;

怎么防止发生?

对于个人来说,就是别乱点莫名的链接。

对于开发者来说。

  • 实施同源策略: 在Web应用程序中,只允许同源的页面才能访问应用程序的资源。后端服务不要允许跨域请求设置(比如 Access-Control-Allow-Origin 标头设置为*)
  • 使用CSRF令牌:在网站展示表单页面(比如转账页面),添加一个随机数令牌,页面中的form里生产一个名字叫做csrf_token的随机数,触发提交时携带这个csrf_token,因为这个csrf_token 是你发给浏览器的,你可以做校验是否合法。而骗子网站得不到这个在页面中的csrf_token。
  • 增加操作确认:在涉及到重要操作的时候,比如删除账户或转账操作,要求用户进行额外的确认,比如输入密码、短信验证等。
  • 使用HTTP-only Cookie,它可以防止从第三方网站发起的伪造请求里不携带真实的token。
  • 减少使用 GET 请求:GET 请求容易被攻击者伪造,因为请求参数可以直接在URL中暴露

相关文章

网友评论

      本文标题:冒充用户转账(CSRF跨域请求伪造攻击)

      本文链接:https://www.haomeiwen.com/subject/mohxzdtx.html