跨站腳本攻擊(Cross Site Scripting),爲了避免和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。惡意攻擊者往Web頁面裏插入惡意的Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。前端
XSS攻擊的分類主要有「反射型」與「存儲型」兩種。數據庫
「反射型」攻擊者經過包裝改造URL參數,而後利用前端代碼的缺陷或漏洞來攻擊,它更偏向於前端層面,而且在實際攻擊中攻擊者會根據 HTML實體編碼、URL編碼、uniocde編碼等進行編碼而後欺騙用戶點擊訪問。後端
而「存儲型」攻擊者則會經過抓包工具或者是直接調用接口的方式想盡一切辦法來向後端數據庫注入數據。常見的地方就是留言評論或者是含有表單提交的地方。安全
XSS攻擊有兩個要點,一個是「輸入點」,針對輸入點咱們能夠對關鍵的特殊的字符進行編碼,而在「輸出點」咱們要對本身採用的輸出方式以及方法要有必定的安全風險認知。架構
XSS之因此會發生,是由於用戶輸入的數據變成了代碼。所以,咱們須要對用戶輸入的數據進行HTML轉義處理,將其中的「尖括號」、「單引號」、「引號」之類的特殊字符進行轉義編碼:分佈式
HTML字符 | HTML轉義後的字符 |
---|---|
< | < |
> | > |
‘ | & |
「 | " |
就目前而言,應對XSS攻擊的主要手段仍是編碼與過濾兩種,編碼用於將特殊的符號 "<、>、&、'、""進行轉義,而過濾則是阻止特定的標記、屬性、事件。
若是你不肯意爲了嚴格的安全而限制產品自己的靈活,那麼我更建議採用「編碼」的方案。工具
文章《IBM Rational AppScan:跨站點腳本攻擊深刻解析》spa
書籍《大型分佈式網站架構設計與實踐》