一、CSRF原理過程
CSRF(Cross-site request forgery)跨站請求偽造,是一種網絡攻擊方式,攻擊者利用受害者已登錄的身份,在不知情的情況下發送惡意請求,以執行未經授權的操作。攻擊過程如下:
一、受害者登錄網站A,A將用戶登錄信息保存在Cookie中. 二、受害者未退出網站A,進入惡意攻擊者的網站B. 三、網站B向網站A發起請求,此時請求中包含了受害者在網站A中的Cookie和誤導受害者執行的惡意代碼. 四、網站A收到請求,由於含有合法身份驗證Cookie,且服務器端沒有做CSRF防禦措施,便執行了攻擊者的惡意代碼. 五、攻擊完成,受害者無感知.
二、CSRF原理驗證
常見的CSRF防禦措施是在向服務器提交請求時,提交一個隨機生成的token,使得請求在服務器端通過校驗後才會被執行。token的獲取可以通過生成的方式避免重複,具體流程如下:
一、服務器生成一個 token,存儲到數據庫之類的高安全數據存儲介質中,如果是多台服務器負載均衡,還要保證所有服務器擁有同一個 token. 二、服務器將這個token寫入到表單的隱藏字段或cookie中. 三、用戶接收到響應的頁面,之後如果點擊了一個提交請求,token值將隨用戶提交的數據一起發送到服務器. 四、服務器收到用戶提交的數據和 token,然後比較兩者的值是否相等,相等就說明這個請求是合法的.
三、XSS和CSRF攻擊原理
與XSS(Cross-site scripting)跨站腳本攻擊不同,XSS攻擊時攻擊者在web頁面中注入惡意腳本,執行非法指令;而CSRF攻擊通過獲取到用戶的身份信息,進而執行web頁面的非法指令,我們可以對比這兩種攻擊方式的原理體會到他們的不同。
四、CSRF原理及利用方式
可以使用以下方式進行CSRF攻擊:
- 通過圖片URL發起攻擊:img標籤是可以直接把圖片以URL形式展示,當用戶訪問這個惡意URL時就觸發了攻擊.
- 利用iframe發起攻擊:攻擊者在博客里添加了一個iframe標籤,在裏面填上類似csrf.html,在填上了一個Form表單,通過隱藏表單來設置攻擊指令.
- 利用提交表單進行攻擊:一個前端程序使用get和post請求,反饋一個轉移指令給後台,攻擊者會不斷提交表單,執行惡意請求.
五、簡述CSRF的攻擊原理
要實現CSRF攻擊,攻擊者必須要讓受害者登錄了網站A並且在獲取了受害者的Cookie後才能執行。攻擊者可以通過發送惡意郵件,冒充可靠來源,引誘受害者點擊惡意鏈接,來獲取到受害者的Cookie。可能最常見的是圖像方式,攻擊者創建了一個img標籤,其中設置了類似「img src=」http://www.a.com/account.asp?action=delete」的一些操作。只要受害者在瀏覽器里加載任何一個頁面,這個請求便會被發送,而受害者不會察覺到這個請求的存在,其賬戶也隨之被刪除。
六、CSRF原理獲取不到受害者的Cookie
為了達到獲取受害者Cookie的目的,攻擊者可以使用XSS、XSS Worm、跨域漏洞等方式,進一步來實現獲取受害者Cookie的目的。其中,XSS是最為常見的攻擊手段。攻擊者注入JS代碼後,獲得了Cookie,然後發送到了攻擊者的服務器上。XSS Worm更為危險,有了它,只要用戶訪問了攻擊者的複製的網頁,該病毒便會自動向所有用戶的好友發送具有傳染性的消息或網址,很快就會造成惡性傳播。除了這兩種方式,文件上傳漏洞、Http Referer跨域等方式都可能被利用來獲取到受害者的Cookie。
七、CSRF Token生成原理
一般來說,CSRF攻擊防禦都需要用到Token技術。這類Token有兩種生成方法:
- 基於服務器Token,也就是每次生成的Token都是隨機數,放到cookie或隱藏表單裏面,服務器通過驗證Token的值來遍歷可信請求,如果驗證成功則允許請求。這種方式需要服務器開銷較多,但是更為安全。
- 基於用戶Token,每個用戶登錄系統時,唯一的用戶Token就創建出來,然後將這個Token和之後證明功能的流程中用的狀態綁定到一起,一旦發現存在CSRF的情況,就將當前狀態全部刪除。這種方式不容易被攻擊,但是效率較低。
八、CSR原理
CSR(Client-side Rendering),即客戶端渲染,是一種在客戶端生成用戶界面的方式。此種方式0前端工程師可直接降低後端代碼的負載,並且頁面展示效果較好,但同時這也會帶來安全問題,容易導致CSRF攻擊等漏洞;通過用戶輸入和表單提交可以發起CSRF攻擊,也能夠基於用戶歷史錯誤的行為來構造XSS攻擊,故前端工程師對於基本的安全問題必須要有足夠的了解。
九、CSRF攻擊
CSRF攻擊的最終目的是要讓受害者不知不覺間向服務器發送請求。攻擊者需要了解被攻擊系統的請求方式,然後初始化一些參數,最終組裝成請求參數提交至服務器。提交惡意請求的方式有多種,其中最常見的就是提交表單,攻擊者會通過以下方式發起CSRF攻擊:
一、提交表單 二、構造一個image對象,利用javascript發起post請求發出。 三、修改用戶賬戶信息 四、利用iframe來發送CSRF攻擊請求,直接跳轉至相關代碼或者結果頁面而不要主動發起請求。
十、CSRF危害
CSRF攻擊主要針對用戶隱私數據、用戶既有資源的篡改、用戶無法感知惡意客戶端的危害。以上這些危害都會影響到用戶,導致資金的損失、賬戶的被盜等嚴重問題,因此,科技界與法律界應該共同面對並解決CSRF攻擊帶來的弊端。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/238826.html