CSRF 十大常见web漏洞——跨站点请求伪造

CSRF介绍
什么是CSRF呢?我们直接看例子 。
【CSRF 十大常见web漏洞——跨站点请求伪造】https://mp.toutiao.com/profile_v3/graphic/preview?do=delete&pgc_id=6829574701128352260
这个URL是头条删除pgc_id为6829574701128352260的一篇文章的连接 , 通过执行这个URL用户就可以删除这篇文章 。
首先攻击者会构造一个页面:
https://mp.toutiao.com/CSRF.html
其内容为:
<img src=https://www.isolves.com/it/aq/fwq/2020-05-25/"https://mp.toutiao.com/profile_v3/graphic/preview?do=delete&pgc_id=6829574701128352260" />
使用了一个<img>标签 , 地址指向了删除头条文章的链接 。
攻击者会诱使头条主去访问这个页面:

CSRF 十大常见web漏洞——跨站点请求伪造

文章插图
执行CSRF攻击
   该用户看到了“头条君找不到你想要的页面”的错误提示 , 回头再看看头条内容管理:
CSRF 十大常见web漏洞——跨站点请求伪造

文章插图
文章被删除了~~
   发现原来存在的“十大常见web漏洞——跨站点请求伪造(CSRF)”文章已经被删除了!呵呵~~
这是因为头条主在访问“https://mp.toutiao.com/CSRF.html”时 , 执行了CSRF.html页面中的命令 , 删除了文章 。
CSRF的防御
验证机制
当头条主在访问“https://mp.toutiao.com/CSRF.html”时增加验证确认机制:
CSRF 十大常见web漏洞——跨站点请求伪造

文章插图
删除确认
   Referer Check
我们在之前的文章中讲过HTTP请求头部的一些可修改的值 , 就包括Referer值:
CSRF 十大常见web漏洞——跨站点请求伪造

文章插图
HTTP请求头部
   就是确认这个值与Host值是否一致 。
操作参数加密
攻击者为什么会构造这个链接:https://mp.toutiao.com/profile_v3/graphic/preview?do=delete&pgc_id=6829574701128352260 , 因为他知道参数“do=delete&pgc_id=6829574701128352260”是删除操作 , 如果将这个参数加密 , 攻击者就不知道具体操作是什么了 , 也就无法攻击了 。
没有网络安全 , 就没有国家安全!




    推荐阅读