跨站請求偽造(CSRF) 漏洞原理詳解及防禦方法
注:轉載請註明出自:https://blog.csdn.net/qq_36711453/article/details/83714380
跨站請求偽造:攻擊者可以劫持其他使用者進行的一些請求,利用使用者身份進行惡意操作。
例如:請求http://x.com/del.php?id=1 是一個刪除ID為1的賬號,但是隻有管理員才可以操作,如果攻擊者把這個頁面巢狀到其他網站中<img src=
“http://x.com/del.php?id=1”> 再把這個頁面傳送給管理員,只要管理員開啟這個頁面,同時瀏覽器也會利用當前登陸的這個管理賬號許可權發出:http://x.com/del.php?1d=1 這個請求,從而劫持此請求,利用管理員賬戶執行了一些操作。
危害:新增管理員賬號、修改網路配置、直接寫入webshell等
1、 挖掘經驗
CSRF主要用於越權操作,因此多發生在有許可權控制的地方。
黑盒挖掘:先搭建好環境,開啟幾個非靜態頁面,抓包看有沒有token,如果沒有,再直接請求這個頁面,不帶referer,如果返回資料還是一樣的,那說明很有可能存在CSRF漏洞,
白盒挖掘:讀取程式碼的核心檔案,檢視裡邊有沒有驗證token和referer相關的程式碼。或者直接搜尋token這個關鍵字,再去看一下比較關心的功能點的程式碼有沒有驗證。
2、 漏洞防範
主流防範有兩種:增加token/referer驗證避免img標籤請求的水坑攻擊和增加驗證碼(影響使用者體驗)
(1)、利用token
Token實在頁面或者cookie中插入一個不可預測的字串,伺服器驗證token是否是上次留下的即可判斷是不是可信請求;
Token實現程式碼:
通過MD5當前時間加上(1,1000)的隨機數生成token,然後檢查是否有token;
抓包,發現沒有token,返回結果faild;
生成token值,傳送返回結果success;
(2)、驗證碼實現
驗證碼沒token那麼實用,使用者體驗較差,所以這一種方式只能用在敏感操作的頁面,利用登入頁面等。
注:錯誤之處,還望指出,謝謝!!!