CRSF(跨站請求僞造)是攻擊站點僞造請求,冒充用戶身份在受信任站點進行操做。具體過程以下:javascript
(1)用戶向信任站點如example.com發送請求java
(2)用戶驗證經過、得到信任站點的身份信息,並放入cookie中,用戶此時能夠在站內進行其餘請求瀏覽器
(3)用戶未退出登陸example.com,而後訪問hack.com網站,該網站返回攻擊性代碼而且在頁面中存在訪問example.com的請求cookie
(4)瀏覽器在用戶可能不知情的狀況下向example.com發送請求網站
(5)因爲同域名能夠帶上cookie信息,所以信息認證經過,請求僞形成功
code
(1)檢測請求來源token
在請求頭中有一個refree字段,refree記錄了發送請求的域名,好比:hack.com向example.com中發送請求,那麼refree就爲hack.com,只要在處理請求中作相應的校驗就能夠中斷請求。ip
(2)加入token校驗get
crsf之因此可以僞造請求成功,其緣由之一在於全部的用戶信息放於cookie中;所以能夠在每次請求中加入token,而後後臺進行校驗,若是校驗經過則進行處理。生成token方式之一以下:hash
function getToken (token) { var str = token || ''; var hash = 5381; for (var i = 0, len = str.length; i < len; ++i) { hash += (hash << 5) + str.charCodeAt(i); } return hash & 0x7fffffff; }