XSS(跨站攻擊)也叫JavaScript注入,是現(xiàn)代網(wǎng)站最頻繁出現(xiàn)的問題之一,它指的是網(wǎng)站被惡意用戶植入了其他代碼,通常發(fā)生在網(wǎng)站將用戶輸入的內(nèi)容直接放到網(wǎng)站內(nèi)容時。例如論壇、留言板等可以輸
XSS(跨站攻擊)也叫JavaScript 注入,是現(xiàn)代網(wǎng)站最頻繁出現(xiàn)的問題之一,它指的是網(wǎng)站被惡意用戶植入了其他代碼,通常發(fā)生在網(wǎng)站將用戶輸入的內(nèi)容直接放到網(wǎng)站內(nèi)容時。例如論壇、留言板等可以輸入任意文字的網(wǎng)站,惡意用戶如果寫入一小段 <script>,并且前、后端都沒有針對輸入內(nèi)容做字符轉(zhuǎn)換和過濾處理,直接把用戶輸入的字串作為頁面內(nèi)容的話,就有可能遭到 XSS。
常見的 XSS 有幾個類型:將惡意代碼寫入數(shù)據(jù)庫,當數(shù)據(jù)被讀取出來時就會執(zhí)行的儲存型 XSS;將用戶輸入的內(nèi)容直接帶回頁面上的反射型 XSS;以及利用 DOM 的特性,各種花式執(zhí)行惡意代碼的DOM-based 型 XSS。
儲存型及反射型都很好理解,DOM-based 型就非常有意思了;可以參考OSWAP 整理的XSS Filter Evasion Cheat Sheet[1],絕大多數(shù)的 XSS 方式,都是通過各個元素的 background-image 屬性或者元素上的各種事件回調(diào)來實現(xiàn);其中特別值得注意的是 SVG,由于 SVG 中可以寫入任意 HTML,還可以加上 onload 事件,如果把 SVG 當成普通圖片處理,直接作為網(wǎng)站內(nèi)容使用,如果遇到惡意用戶的話,后果不堪設想。所以在上線上傳圖片功能時,務必要把 SVG 過濾掉!
避免 XSS 的方法其實也很簡單,只要在數(shù)據(jù)輸入輸出時做好字符轉(zhuǎn)換,使惡意代碼不被執(zhí)行,而是被解析成字符就可以了。
做網(wǎng)站怎么能沒有網(wǎng)站建設知識?學點網(wǎng)站知識,帶您進入網(wǎng)站的世界!