浅谈web安全问题——安全永不过时(二)

前言

第一次写系列文章,希望自己一定坚持下去。

书接前文xss,我们今天来讲一下csrf。

csrf (Cross Site Request Forgery)跨站点请求伪造。

概念

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

举例(只是个例子哈,一般购物网站的防护措施还是很强的。):

张三在某个正规购物网站上购物,这时电脑上突然弹出,一个链接,很诱人的那种(),张三点了进去,没想到却是挂羊头卖狗肉,里面什么也没有,只有一些广告和关闭按钮,这影响了张三兴致,他骂骂咧咧的关掉了网页忙其他事情去了。过了几天,他收到消息,发现自己账户里面没钱了,这时他才意识到自己中招了。

引用一个图片便于理解

浅谈web安全问题——安全永不过时(二)

解析一下示例CSRF攻击的流程:

  • 受害者登录购物网站并保留了登录凭证(Cookie)。
  • 攻击者引诱受害者访问了钓鱼网站。 向 购物网站 发送了一个请求。
  • 购物接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
  • 购物网站以受害者的名义执行了某些行为。
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让购物网站执行了自己定义的操作。

分类

csrf大致可以分为三类。构造get请求,构造post请求,引入外部链接。

构造get请求

这种类型的攻击一般直接放在 img标签的src中,当用户访问的时候,get请求就会被发送出去。目标网站就会收到一个跨域请求。

构造post请求

这种类型的攻击一般是利用 表单类组件中的 type = 'hidden'属性,让用户看不见,然后在脚步中自动提交。 目标网站就收到了一次跨域的post请求。

 <form action="http://bank.example/withdraw" method=POST> <input type="hidden" name="account" value="xiaoming" /> <input type="hidden" name="amount" value="10000" /> <input type="hidden" name="for" value="hacker" /> </form> <script> document.forms[0].submit(); </script> 

链接型的攻击

这种情况下的攻击并不常见,因为相比于上面他不是自动触发,而是需要去点击一下外表链接标签这种

浅谈web安全问题——安全永不过时(二)

防范

验证码

最简单的就是利用验证码进行身份验证,比较稳妥。

同源策略

直接防止跨域请求,来防止csrf 在请求头中的referer携带Origin字段,用该字段去判断是否同源。 但是这种方法不是很稳健,因为referer是浏览器提供的,不同浏览器之间是存在差异的。并且一些情况下还可以认为修改。所以并不安全。

BUT

只从同源上来解决问题是不够的,现在来设想一种场景,用户有权限在评论区发布一下图片资源时候,就很容易发动同源攻击了。

利用token,

服务器生成token ,放在session中,网页生成之后发送给,用户,之后每次请求浏览器要带上token,一般放在请求头中。此时服务器进行验证,判断是否是同一用户所发送的。

利用cookie

单纯的csrf攻击,黑客是拿不到cookie,所以前端获取cookie之后拿去服务器验证,也是一种方法。

原文链接:https://blog.csdn.net/qq_60845079/article/details/124862599

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/18381

(0)
上一篇 2023年10月27日
下一篇 2023年10月27日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml