繞過 CSRF 防御的方法有以下這些:
增加Token驗證:對關鍵操作增加Token參數,token必須隨機,每次都不一樣;
關于安全的會話管理,避免會話被利用:不要在客戶端保存敏感信息,比如身份驗證信息。退出、關閉瀏覽器時的會話過期機制,設置會話過機制,比如15分鐘無操作,則自動登錄超時;
訪問控制安全管理:敏感信息的修改時需要身份進行二次認證,比如修改賬號密碼,需要判斷舊密碼。建議敏感信息的修改使用POST,而不是GET,建議通過HTTP頭部中的REFERER來限制原頁面;
增加驗證碼:一般在登錄主要防暴力破解,也可以用在其他重要信息操作的表單中,但是需要考慮可用性;
驗證HTTP Referer字段:HTTP頭中的Referer字段記錄了該HTTP請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求來自于同一個網站,而如果黑客要對其實施CSRF攻擊,他一般只能在他自己的網站構造請求。因此,可以通過驗證Referer值來防御CSRF攻擊。
在HTTP頭中自定義屬性并驗證:這種方法也是使用token并進行驗證,這里并不是把token以參數的形式置于HTTP請求中,而是把它放到HTTP頭中自定義的屬性里。通過XMLHttpRequest這個類,可以一次性給所有該類請求加上csrftoken這個HTTP頭屬性,并把token值放入其中。通過XMLHttpRequest請求的地址不會被記錄到瀏覽器的地址欄,也不用擔心token會透過Referer泄露到其他網站中去。
回答所涉及的環境:聯想天逸510S、Windows 10。
繞過 CSRF 防御的方法有以下這些:
增加Token驗證:對關鍵操作增加Token參數,token必須隨機,每次都不一樣;
關于安全的會話管理,避免會話被利用:不要在客戶端保存敏感信息,比如身份驗證信息。退出、關閉瀏覽器時的會話過期機制,設置會話過機制,比如15分鐘無操作,則自動登錄超時;
訪問控制安全管理:敏感信息的修改時需要身份進行二次認證,比如修改賬號密碼,需要判斷舊密碼。建議敏感信息的修改使用POST,而不是GET,建議通過HTTP頭部中的REFERER來限制原頁面;
增加驗證碼:一般在登錄主要防暴力破解,也可以用在其他重要信息操作的表單中,但是需要考慮可用性;
驗證HTTP Referer字段:HTTP頭中的Referer字段記錄了該HTTP請求的來源地址。在通常情況下,訪問一個安全受限頁面的請求來自于同一個網站,而如果黑客要對其實施CSRF攻擊,他一般只能在他自己的網站構造請求。因此,可以通過驗證Referer值來防御CSRF攻擊。
在HTTP頭中自定義屬性并驗證:這種方法也是使用token并進行驗證,這里并不是把token以參數的形式置于HTTP請求中,而是把它放到HTTP頭中自定義的屬性里。通過XMLHttpRequest這個類,可以一次性給所有該類請求加上csrftoken這個HTTP頭屬性,并把token值放入其中。通過XMLHttpRequest請求的地址不會被記錄到瀏覽器的地址欄,也不用擔心token會透過Referer泄露到其他網站中去。
回答所涉及的環境:聯想天逸510S、Windows 10。