白話:CRSF攻擊

今天,來分享一下CRSF攻擊基本知識

CRSF:cross site request forgery 跨站請求僞造

下面是CRSF攻擊的示意圖:
這裏寫圖片描述
上圖可以簡單總結爲三步:

  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驗證,如果正確,則繼續後續操作,否則阻止繼續進行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章