XSS(Cross Site Scripting)攻擊全稱跨站腳本攻擊,是爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS,XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。(摘自百度百科)html
一、盜取各種用戶賬號,如機器登陸賬號、用戶網銀賬號、各種管理員賬號
二、控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力
三、盜竊企業重要的具備商業價值的資料
四、非法轉帳
五、強制發送電子郵件
六、網站掛馬
七、控制受害者機器向其它網站發起攻擊web
反射型XSS,也叫非持久型XSS,是指發生請求時,XSS代碼出如今請求URL中,做爲參數提交到服務器,服務器解析並響應。響應結果中包含XSS代碼,最後瀏覽器解析並執行。從概念上能夠看出,反射型XSS代碼是首先出如今URL中的,而後須要服務端解析,最後須要瀏覽器解析以後XSS代碼纔可以攻擊。數據庫
這類一般使用URL,具體流程:瀏覽器
一、Alice給Bob發送一個惡意構造了Web的URL。
二、Bob點擊並查看了這個URL。
三、惡意頁面中的JavaScript打開一個具備漏洞的HTML頁面並將其安裝在Bob電腦上。
四、具備漏洞的HTML頁面包含了在Bob電腦本地域執行的JavaScript。
五、Alice的惡意腳本能夠在Bob的電腦上執行Bob所持有的權限下的命令。安全
http://localhost:8080/helloController/search?name=<script>alert("hey!")</script>服務器
http://localhost:8080/helloController/search?name=<img src='w.123' onerror='alert("hey!")'>cookie
http://localhost:8080/helloController/search?name=<a onclick='alert("hey!")'>點我</a>網絡
服務端代碼片斷,只作了一個簡單的字符串鏈接就返回給客戶端。xss
咱們能夠看到Google Chrome是有作處理的相對比較安全,可是Firefox就沒有。網站
存儲型XSS,也叫持久型XSS,主要是將XSS代碼發送到服務器(不論是數據庫、內存仍是文件系統等。),而後在下次請求頁面的時候就不用帶上XSS代碼了。最典型的就是留言板XSS。用戶提交了一條包含XSS代碼的留言到數據庫。當目標用戶查詢留言時,那些留言的內容會從服務器解析以後加載出來。瀏覽器發現有XSS代碼,就當作正常的HTML和JS解析執行。XSS攻擊就發生了。
經常使用來幹嗎?
一、竊取用戶信息,如cookie,token,帳號密碼等。
例如:張三發了一篇帖子,李四進行回覆:但內容倒是一段js腳本,這篇帖子被他人瀏覽的時候就會中招,例子中的只是一個alert(),但腳本能夠寫的比較複雜一點盜用用戶cookie等等操做。
二、除了這種hacker還有個很慣用的伎倆,例如存儲型XSS生成一些誘人的圖片,文字(你懂的!),而後用戶去點擊的時候就能夠執行某些壞事,竊取信息或者誘導到釣魚網站。
點擊圖片後,就會進入到目標網站了。
三、劫持流量實現惡意跳轉
用戶打開的網址,會默認跳轉至指定網站,腳本以下:
<script>window.location.href="http://www.baidu.com";</script>
在源頭控制,把輸入的一些不合法的東西都過濾掉,從而保證安全性。如移除用戶提交的的DOM屬性如onerror,移除用戶上傳的Style節點,<iframe>, <script>,<a>節點等
若是源頭沒控制好,就得後期補救了:像一些常見的符號,如<>在輸出的時候要對其進行轉換編碼,這樣作瀏覽器是不會對該標籤進行解釋執行的,同時也不影響顯示效果。例如:對<>作編碼如:"<"用:"<",">"用:">"來代替。
經過以上的案例咱們不難發現xss攻擊要能達成每每須要較長的字符串,所以對於一些能夠預期的輸入能夠經過限制長度強制截斷來進行防護。
具體詳情請參考:http://www.javashuo.com/article/p-chiufjdc-ey.html
http://www.javashuo.com/article/p-rzlgbmsc-ge.html
https://baike.baidu.com/item/XSS%E6%94%BB%E5%87%BB/954065?fr=aladdin