什么是xss和csrf攻擊?怎么防范?
時間:2023-09-09 來源:華清遠見
一:XSS
XSS的基本概念:
XSS全稱Cross Site Scripting,跨域腳本攻擊。
XSS攻擊原理:
XSS不需要做任何的登錄認證,它會通過合法的操作,比如在url中輸入、或者在評論框中輸入等,向頁面注入一些腳本,可能是js、hmtl代碼塊等。
XSS的攻擊方式:
1、反射型:發出請求時,XSS代碼出現在url中,作為輸入提交到服務器端,服務器端解析后響應,XSS代碼隨響應內容一起傳回給瀏覽器,最后瀏覽器解析執行XSS代碼。這個過程像一次反射,所以叫反射型XSS。
2、存儲型:存儲型XSS和反射型XSS的差別在于,提交的代碼會存儲在服務器端,下次請求時目標頁面時不用再提交XSS代碼。
XSS的防范措施:
1、編碼:對用戶輸入的數據進行HTML Entity 編碼。把字符轉換成轉義字符,使得瀏覽器在最終輸出結果上是一樣的。
比如說這段代碼:<script>alert(hqyj)</script>
若不進行任何處理,則瀏覽器會執行alert的js操作,實現XSS注入。進行編碼處理之后,L在瀏覽器中的顯示結果就是這個文本,將變量作為純文本進行輸出,且不引起JavaScript的執行。
2、過濾:移除用戶輸入的和事件相關的屬性,過濾掉一些不安全的內容,移除用戶輸入的節點。
3、 校正:避免直接對HTML Entity進行解碼。使用DOM Parse轉換,校正不配對的DOM標簽,把文本解析成DOM結構。
二:CSRF
CSRF的基本概念:
CSRF全稱是Cross-site request forgery,跨站請求偽造。
CSRF的攻擊原理:
用戶是某網站的注冊用戶,且登錄進去,于是該網站就給用戶下發cookie。要完成一次CSRF攻擊,受害者必須滿足兩個必要的條件:登錄受信任網站,并在本地生成Cookie;在不登出的情況下,訪問危險另一網站。
CSRF如何防御:
1、將cookie設置為HttpOnly
CRSF攻擊很大程度上是利用了瀏覽器的cookie,為了防止站內的XSS漏洞盜取cookie,需要在cookie中設置“HttpOnly”屬性,這樣通過程序就無法讀取到cookie信息,避免了攻擊者偽造cookie的情況出現。設置cookie為HttpOnly的代碼如下:response.setHeader( "Set-Cookie", "cookiename=cookievalue;HttpOnly");
2、 Token 驗證
攻擊者可以偽造用戶的請求,該請求中所有的用戶驗證信息都存在于cookie中,因此攻擊者可以在不知道用戶驗證信息的情況下直接利用用戶的cookie來通過安全驗證。在請求中放入攻擊者所不能偽造的信息,并且該信總不存在于cookie之中。服務器發送給客戶端一個token;客戶端提交的表單中帶著這個token;如果這個token不合法,那么服務器拒絕這個請求。
3、 Referer驗證
Referer指的是頁面請求來源。意思是,只接受本站的請求,服務器才做響應;如果不是,就攔截。
三:CSRF 和 XSS 的區別
1、CSRF是跨站請求偽造; XSS是跨域腳本攻擊。
2、CSRF需要用戶先登錄網站獲取cookie; XSS不需要登錄。
3、 CSRF是利用網站本身的漏洞; XSS是向網站注入JS代碼,執行JS里的代碼,篡改網站的內容。

