什麼是XSS腳本攻擊
XSS全名:Cross-Site-Scripting, 理論上縮小應該為 CSS 但為了和 CSS(層疊樣式表)進行區分,改了個名字叫XSS.
XSS攻擊通常指的是通過利用網頁開發時留下的漏洞,通過巧妙的方法注入惡意指令代碼到網頁,使用戶加載並執行攻擊者惡意製造的網頁程序。這些惡意網頁程序通常是JavaScript,但實際上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到包括但不限於更高的權限(如執行一些操作)、私密網頁內容、會話和cookie等各種內容
xss腳本攻擊原理
HTML是一種超文本標記語言,通過將一些字符特殊地對待來區別文本和標記,例如,小於符號(與之間的字符是頁面的標題等等。當動態頁面中插入的內容含有這些特殊字符(如
xss腳本攻擊特點
與釣魚攻擊相比,XSS攻擊所帶來的危害更大,通常具有如下特點:
①由於XSS攻擊在用戶當前使用的應用程序中執行,用戶將會看到與其有關的個性化信息,如賬戶信息或“歡迎回來”消息,克隆的Web站點不會顯示個性化信息。
②通常,在釣魚攻擊中使用的克隆Web站點一經發現,就會立即被關閉。
③許多瀏覽器與安全防護軟件產品都內置釣魚攻
若我們在評論裡輸入了一段可執行的javascr,讓他彈出 OK,當把評論提交後,如果沒有網站沒有做字符的過濾處理的話,那麼我們提交的腳本就會加載到頁面裡,但是別忘了他是一個JS的alert方法,然後大家一打開評論頁面就會彈出 OK.
可能的幾種XSS注入方式
- alert(String.fromCharCode(88,83m83)) 通過獲取字母的ASCII碼來規避網站的過濾。
- 通過img標籤來達到攻擊的目的,
- <link>通過樣式表注入
- 通過style方式注入
XSS腳本攻擊防禦方式:
- 不信任用戶提交的任何內容,對所有用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、REFER、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其他的一律過濾。儘量採用POST而非GET提交表單;對“”,“;”,“””等字符做過濾;任何內容輸出到頁面之前都必須加以en-code,避免不小心把htmltag顯示出來。
- 實現Session 標記(session tokens)、驗證碼系統或者HTTP引用頭檢查,以防功能被第三方網站所執行,對於用戶提交信息的中的img等link,檢查是否有重定向回本站、不是真的圖片等可疑操作。
- cookie 防盜。避免直接在cookie中洩露用戶隱私,例如email、密碼,等等;通過使cookie和系統IP綁定來降低cookie洩露後的危險。這樣攻擊者得到的cookie沒有實際價值,很難拿來直接進行重放攻擊。
- 確認接收的內容被妥善地規範化,僅包含最小的、安全的Tag(沒有JavaScript),去掉任何對遠程內容的引用(尤其是樣式表和JavaScript),使用HTTPonly的cookie。
閱讀更多 前端講書人麥克黑 的文章