界面安全性系列1-CSRF攻擊

一.CSRF是什麼?

  CSRF(Cross-site request forgery),中文名稱:跨站請求僞造,也被稱爲:one click attack/session riding,縮寫爲:CSRF/XSRF。

二.CSRF可以做什麼?

  你這可以這麼理解CSRF攻擊:攻擊者盜用了你的身份,以你的名義發送惡意請求。CSRF能夠做的事情包括:以你名義發送郵件,發消息,盜取你的賬號,甚至於購買商品,虛擬貨幣轉賬......造成的問題包括:個人隱私泄露以及財產安全。

三. CSRF攻擊模式圖

其實就是在瀏覽器存了a的憑證,認爲通過該客戶端過來的訪問通過了認證,而B可能是web 可能就是個郵件裏面的惡意鏈接,只要用戶訪問了,即可以盜用a的憑證幹壞事。


四. CSRF防範

1. 服務端csrf token

在服務器端輸出頁面時候增加一個隨機key value的token值,這樣所有a網站的頁面等於有一個隨機參數,這樣在a網站提交的所有請求中都要去驗證這個參數的正確性。這樣B就無法獲取到這個隨機值,而驗證失敗,任何提交訪問都會返回錯誤

2. cookie值的md5

這個和1類似,將當前站點cookie,生成的md5傳到後臺進行驗證。這樣B無法跨站獲取到A的cookie,無法構造出該參數。

3. 驗證碼

這個就是在任意表單提交都增加驗證碼功能。B當然就不行了。


總結,當然我推薦1這個方式,而且我們目前網站使用的phalcon框架自帶了security csrf token的一系列函數,直接使用方式一

<input id="token" type="hidden" name="<?php echo $this->security->getTokenKey()?>"
               value="<?php echo $this->security->getToken() ?>" />

POST後只需要$this->security->checkToken() 驗證這個函數成功即可。

使用ajax也可以帶上這個id爲token的input框的值。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章