您好,登錄后才能下訂單哦!
我們首先來分析反射型的XSS。將安全級別設為low,然后選擇XSS reflected,在文本框中隨意輸入一個用戶名,提交之后就會在頁面上顯示。從URL中可以看出,用戶名是通過name參數以GET方式提交的。
查看low級別的網頁代碼,可以看到這里對用于接收用戶數據的name參數沒有進行任何過濾,就直接在網頁中輸出,因而造成了XSS漏洞。
我們輸入一段最基本的XSS語句來實現彈框:“<script>alert(‘hi’)</script>”:
此時查看網頁源文件,可以看到我們所輸入的腳本被嵌入到了網頁中。
再輸入一段語句來彈出cookie:“<script>alert(document.cookie)</script>”。
接下來再查看medium級別的XSS源碼,這里在輸出name參數中的數據之前,先利用str_replace()函數進行了處理,處理的目的是將<script>替換成空值。
但是這個過濾處理實在是太簡單了,首先我們只要使用大寫的<SCRIPT>就可以繞過,其次XSS也并非只能使用JavaScript,通過HTML語句也可以跨站,比如“<img src=1 onerror=alert(‘hi’)>”語句。<img>是html中的圖片標記,這條語句表示在網頁中插入一張圖片,“src=1”指定了圖片文件的URL,如果圖片不存在(這里肯定是不存在了),那么將會彈出錯誤提示框,從而實現彈框的效果。
最后再來查看high級別的源碼,這里利用了htmlspecialchars()函數進行過濾。這個函數可以把& (和號)、"(雙引號)、'(單引號)、<(小于)、>(大于)這些敏感符號都進行轉義,所有的跨站語句中基本都離不開這些符號,因而只需要這一個函數就阻止了XSS漏洞,所以跨站漏洞的代碼防御還是比較簡單的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。