XSS攻击处理办法
XSS 攻擊。根據(jù)攻擊的來源,我們可以將此類攻擊分為三種,分別為:
- 反射型
- 存儲型
- DOM 型
存儲型 XSS 攻擊。此類攻擊是攻擊者將惡意代碼提交至服務(wù)器并保存在數(shù)據(jù)庫中,用戶訪問該頁面觸發(fā)攻擊行為。這種類型的攻擊常見于保存用戶編輯數(shù)據(jù)的場景下,比如案例中的發(fā)表文章,亦或者評論場景等等。
防范存儲型 XSS 攻擊的策略就是不相信一切用戶提交的信息,比如說用戶的評論、發(fā)表的文章等等。對于這些信息一律進(jìn)行字符串轉(zhuǎn)義,主要是引號、尖括號、斜杠
function escape(str) {str = str.replace(/&/g, '&')str = str.replace(/</g, '<')str = str.replace(/>/g, '>')str = str.replace(/"/g, '&quto;')str = str.replace(/'/g, ''')str = str.replace(/`/g, '`')str = str.replace(/\//g, '/')return str } // "<script>alert(1)</script>" escape('<script>alert(1)</script>')但是在顯示富文本的場景下其實(shí)不能把所有的內(nèi)容都轉(zhuǎn)義了,因?yàn)檫@樣會把需要的格式也過濾掉。對于這種情況,通常考慮采用白名單過濾的辦法。
// 使用 js-xss 開源項(xiàng)目 const xss = require('xss') let html = xss('<h1 id="title">XSS</h1><script>alert("xss");</script>') // -> <h1>XSS</h1><script>alert("xss");</script> console.log(html)在白名單的情況下,h1 標(biāo)簽不會被轉(zhuǎn)義,但是 script 能被正常轉(zhuǎn)義。
總結(jié)
- 上一篇: HTTP状态码大全
- 下一篇: 使用ExtractTextPlugin将