XSS攻击处理办法
XSS 攻擊。根據攻擊的來源,我們可以將此類攻擊分為三種,分別為:
- 反射型
- 存儲型
- DOM 型
存儲型 XSS 攻擊。此類攻擊是攻擊者將惡意代碼提交至服務器并保存在數據庫中,用戶訪問該頁面觸發攻擊行為。這種類型的攻擊常見于保存用戶編輯數據的場景下,比如案例中的發表文章,亦或者評論場景等等。
防范存儲型 XSS 攻擊的策略就是不相信一切用戶提交的信息,比如說用戶的評論、發表的文章等等。對于這些信息一律進行字符串轉義,主要是引號、尖括號、斜杠
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>')但是在顯示富文本的場景下其實不能把所有的內容都轉義了,因為這樣會把需要的格式也過濾掉。對于這種情況,通常考慮采用白名單過濾的辦法。
// 使用 js-xss 開源項目 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 標簽不會被轉義,但是 script 能被正常轉義。
總結
- 上一篇: HTTP状态码大全
- 下一篇: 被安全控制的ECS实例怎样进入启动中状态