白话:CRSF攻击

今天,来分享一下CRSF攻击基本知识

CRSF:cross site request forgery 跨站请求伪造

下面是CRSF攻击的示意图:
白话:CRSF攻击_第1张图片
上图可以简单总结为三步:

  1. 用户登陆A站,并保留登陆信息
  2. 用户访问B站, B站携带A站登陆信息恶意请求A站
  3. A站无法识别请求方,当作合法请求处理,从而遭受攻击

简单示例:
某个网站存在以下恶意信息

<img src="http://www.xxx.com/blogadmin.php?type=delete&id=3">

乍一看,可能大家感觉这不就是一个简单的html图片标签吗?
但是仔细看可以发现,这根本就不是一个对图片的请求连接,当你登陆到此网站后,网站会主动发起:

http://www.xxx.com/blogadmin.php?type=delete&id=100

的请求,如果此时www.xxx.com做的比较简陋,就是通过get请求来进行blog的管理
假设后台如果是这样写的话:

$type = $_GET['type'];
$id = $_GET['id'];
if($type == 'delete'){
    if($id > 0 ){
        delete_blog_by_id($id);
        ...
    }
}

那么可能你昨天刚熬夜写的新博文就被无情的干掉了,然而你却是一脸蒙逼,毫不知情。
当然啦,很少有网站这么做,这样做的网站,也很少有网站专门去攻击,

那么,我们应该怎样去预防CRSF攻击呢?

  1. 将cookie设置为HttpOnly
    具体的设置方法因网站的语言不同,而有所差异,具体方法请自行谷歌
  2. 检测Referer
    HTTP头部的Referer用来记录HTTP请求的来源地址,一般情况下,来自本站的请求都是合法且安全的,而且对于比较敏感操作,必须设置来源本站,于是通过检测Referer信息,就可以避免此类攻击
  3. 设置token
    在请求中放入攻击者无法伪造的东西,从而避免此类攻击,如在http请求中加入随机的token,然后在数据提交时,先进行token验证,如果正确,则继续后续操作,否则阻止继续进行。

你可能感兴趣的:(Web安全,白话Web攻击)