XSS利用部分程序將包含Javascript等惡意腳本注入,使瀏覽器執行完成個人的目的
以反射型為例
以輸入語句<script>alert(/xss/)</script>為例,
此時會彈出/XSS/的顯示框,證明語句被執行。
因為語句中包含<script>能被執行,所以要針對<script>進行過濾,同時需要注意對有些繞過過濾的方法進行處理
單純過濾<script>標簽
函數str_replace()能夠對輸入的數據中<script>標簽替換為空,如圖輸入
可以得到,繞過了限制規則
但輸入復寫和大小寫后再測試:
復寫:
大小寫:
就能夠輕松的繞過
繼續修改腳本:
上述代碼,基於正則表達式進行過濾,/i不區分大小寫,對“//”內部的內容反復過濾直至不再出現
但設置黑名單的方法具有局限性,上述方法只針對黑名單內部的有效
其他標簽就可以輕松繞過;
繼續升級版本,如果能將輸入的內容只作數據看,而不看作指令就能夠避免程序被錯誤的執行,htmlspecialchars()函數能將預定義字符鑽換為HTML實體,使得“<”,“>”,“'”,“"”,“&”失去命令的效果
再輸入含標簽語句
沒有刪除“<”等有特殊意義的符號,但依舊不會執行。
在本實驗中,如果有輸入的字符限制和其他限制可以通過burpsuite抓包進行修改,然后將其傳送到服務器即可