驗證XSS攻擊重點不是去查找可輸入哪些內容會出現什麼樣的bug就是測試XSS攻擊,重點是瞭解它出現的原理,爲何會出現XSS攻擊,致使一些問題出現?如何防護與解決XSS攻擊?如下我將簡單介紹以上提出的問題。html
如何斷定沒有被XSS注入?web
我在數據交互的地方輸入什麼內容,則我輸入的內容被實際展現出來,這樣咱們才認爲沒有被XSS注入。數據庫
XSS是什麼?瀏覽器
XSS(Cross Site Scripting),即跨站腳本攻擊,是一種常見於web application中的計算機安全漏洞。XSS經過在用戶端注入惡意的可運行腳本,若服務器端對用戶輸入不進行處理,直接將用戶輸入輸出到瀏覽器,則瀏覽器將會執行用戶注入的腳本。安全
XSS的分類?服務器
1.非持久型,也叫反射型XSS。經過GET和POST方法,向服務器端輸入數據。用戶輸入的數據一般被放置在URL的query string中,或者是form 數據中。若是服務器端對輸入的數據不進行過濾,驗證或編碼,就直接將用戶輸入的信息直接呈現給客戶,則可能會形成反射型XSS。微信
2.持久型,也叫存儲型XSS。一般是由於服務器端將用戶輸入的惡意腳本沒有經過驗證就直接存儲在數據庫,而且每次經過調用數據庫的方式,將數據呈如今瀏覽器上。則該XSS跨站腳本攻擊將一直存在。若其餘用戶訪問該頁面,則惡意腳本就會被觸發,用於盜取其餘用戶的私人信息。cookie
XSS的原理分析與解刨:app
詳見這篇文章:http://www.freebuf.com/articles/web/40520.htmlxss
XSS常見漏洞出現的地方:
數據交互的地方:
-get post cookies headers
-反饋與瀏覽
-富文本編輯器
-各種標籤插入和自定義
數據輸出的地方:
-用戶資料
-關鍵詞、標籤、說明
-文件上傳
XSS的驗證方式,如下的驗證都可說明當前可被XSS注入:
APP中涉及到H5的頁面,在可輸入框輸入如下內容:
正常的頁面以下截圖:
一、在交互頁面輸入:<script> var valtest='{$dd}';</script>,頁面的編輯按鈕消失,且出現了\N,截圖顯示以下:
二、在交互頁面輸入<script>alert('xss')</script> 漏洞代碼,查看是否出現彈框中顯示出xss
三、在交互頁面輸入<span class="www"><script>alert(1)</script></span>,仍查看是否出現彈框。
XSS出現的緣由?
在HTML中經常使用到字符實體,將經常使用到的字符實體沒有進行轉譯,致使完整的標籤出現,在可輸入的文本框等某些區域內輸入特定的某些標籤致使代碼被惡意篡改。
XSS的解決與防護措施?
服務器都會將JavaScript當作文本處理,在服務端整合進HTML文檔中,在瀏覽器解析這些文本的過程,也就是XSS被執行的時候,因此主要的防護措施就是對任何用戶提交到服務器上的文本都要通過編碼或者轉譯。
一、常見的HTML中有用的字符實體以下截圖:
二、如下的截圖中能夠看到已解決了XSS的注入,所以能夠看到輸入的內容被實際展現了出來。詳見示例以下:
咱們對當前輸入的文本框內容查看,實際它已對輸入的標籤進行了轉譯,所以輸入的內容纔可被實際展現出來,查看方式可經過將此頁面分享到微信、QQ等,用google Chrome打開,右鍵鼠標,查看「顯示網頁源代碼」。