XSS (Cross-site scripting)
寫得很棒的文章,舉出很多淺顯易懂的例子介紹 xss 攻擊的種類及如何預防
筆記:
Cross-site scripting(跨網站腳本攻擊),因避免與 CSS 混淆,通常簡稱為:XSS
惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響
XSS 攻擊種類
XSS 攻擊分為三種:
- 儲存型
常見於會用到使用者資料的情況。e.g. 論壇發文、商品評價、使用者私訊
- 反射型
常見於使用 URL 傳遞參數的狀況。e.g. 網站跳轉、搜尋
- DOM 型
差別
DOM 型 XSS 與另外兩種 XSS 的差別:
在 DOM 型 XSS 中,取出和執行惡意程式碼由 browser 完成,屬於前端 JavaScript 自身的安全漏洞 而另外兩種 XSS 都屬於 server 端的安全漏洞
儲存型 XSS 跟反射型 XSS 的差別:
儲存型 XSS 的惡意程式碼存在資料庫裡,反射型 XSS 的惡意程式碼存在 URL 參數裡
XSS 攻擊的預防
儲存型和反射型 XSS 攻擊:
- 改為纯前端渲染,把程式碼和資料分開
- 對 HTML 做適當轉譯
DOM 型 XSS 攻擊:
- 避免把不可信的資料來源當作 HTML 插到頁面上,小心使用
.innerHTML、.outerHTML、document.write()
- 避免將不可信的字串當作程式碼運行,小心使用
location、onclick、onerror、onload、onmouseover
等,<a>
tag 的href
屬性,JavaScript 的 eval()、setTimeout()、setInterval()
等