反射型XSS也被稱為非持久性CSS。當用戶訪問一個帶有XSS代碼的URL請求時,服務器端接收數據后處理,然后把帶有XSS代碼的數據發送到瀏覽器,瀏覽器解析這段帶有XSS代碼的數據后,最終造成XSS漏洞。這個過程就像一次反射,故稱為反射型XSS。
DVWA – low
這里對於接受用戶數據的name參數沒有進行任何過濾,就直接在網頁中輸出。
<script>alert(document.cookie)</script>
# 在這里,chrome默認不允許任何彈窗,如使用chrome測試,請先設置。
# Here is the link: http://jingyan.baidu.com/article/466506580d9828f549e5f8d1.html
DVWA—medium
還是先看源碼,medium中在輸出name參數中的數據之前,先利用str_replace()函數進行了處理,目的是將<script>替換為空。
在這里,我們可以使用大寫的<SCRIPT>
Eg: <SCRIPT>alert(document.cookie)</SCRIPT>
另外,通過HTML也可以跨站。
Eg:<img src=1 onerror=alert(document.cookie)>
# <img>是html中的圖片標記,這條語句表示在網頁中插入一張圖片,“src=1”指定了圖片文件的URL,如果圖片不存在(這里肯定是不存在了),那么將會彈出錯誤提示框,從而實現彈框的效果。
DVWA—high
再來查看high級別的源碼,這里利用了htmlspecialchars()函數進行過濾。這個函數可以把& (和號)、"(雙引號)、'(單引號)、<(小於)、>(大於)這些敏感符號都進行轉義,所有的跨站語句中基本都離不開這些符號,因而只需要這一個函數就阻止了XSS漏洞,所以跨站漏洞的代碼防御還是比較簡單的。
參考資料: 1.DVWA系列之20 反射型XSS分析 Link :http://yttitan.blog.51cto.com/70821/1728465 2.Web安全深度剖析――張炳帥