Cross Site Scripting的縮寫原本是CSS,可是這樣就跟Cascading Style Sheets的縮寫混淆了,因此使用XSS,使用字母X更庫,並且更貼切的反應這是一種惡意攻擊技術,中文名稱是「跨站腳本攻擊」。php
原理概要:某個惡意用戶發現一個網站存在XSS漏洞,該用戶向此網站上傳內容時,例如,提交表單,在表單中填寫的不是正常的內容,而是填寫惡意的Javascript代碼或者可以形成網站頁面中的HTML標籤被惡意閉合的內容,這樣其餘用戶瀏覽該頁面時,嵌入其中的Javascript代碼被執行或者因爲惡意標籤閉合形成頁面邏輯的改變,均可以被利用達到攻擊的目的。html
對於那些半年沒有更新的小企業網站來講,發生XSS漏洞幾乎沒有什麼用前端
可是在各種的社交平臺,郵件系統,開源流行的Web應用,BBS,微博等場景中,形成的殺傷力卻十分強大。java
劫持用戶cookie是最多見的跨站攻擊形式,經過在網頁中寫入並執行腳本執行文件(多數狀況下是JavaScript腳本代碼),劫持用戶瀏覽器,將用戶當前使用的sessionID信息發送至攻擊者控制的網站或服務器中。node
又能夠稱爲「框架釣魚」。利用JS腳本的基本功能之一:操做網頁中的DOM樹結構和內容,在網頁中經過JS腳本,生成虛假的頁面,欺騙用戶執行操做,而用戶全部的輸入內容都會被髮送到攻擊者的服務器上。git
掛馬(水坑攻擊)github
有侷限性的鍵盤記錄
......ajax
假如我有一個顯示用戶名的區域經過ajax獲取數據而後動態innerHTML插入到一個div裏顯示。代碼以下(僞代碼)後端
<div id="myDiv"></div> <script> // 假如str就是咱們從遠程服務獲取的用戶名信息 var str = "<div></div>"; str += "<img src='empty.gif' onerror='alert(\"hello world\"); this.parentNode.removeChild(this);"/>"; document.getElementById('myDiv').innerHTML = str; </script>
這時圖片不存在就會執行oneror事件,彈出「hello world」;若是他執行一個請求將你的cookie發給惡意網站,那你的登錄信息就全丟了。固然能夠幹任何他想作的事了。
以上只是舉了一種xss的攻擊方式。瀏覽器
將錄入的惡意標籤進行轉碼再存儲,主要在後端錄入的時候作。前端作意義不大。 固然前端能夠在展現數據的時候進行標籤轉碼,能夠作到雙保險。
如下是一個工具支持前端和nodejs使用。https://jsxss.com/zh/index.html
其餘後端語言如java,php都有對應的函數類使用。
博客地址
: https://github.com/kokokele/k...