Cross-Site Scripting (XSS)
預防方法
除了對輸入使用白名單或是黑名單驗證外,還需要針對輸出做 Encoding。
白名單驗證
使用 Regex 限制輸入資料的字元。
黑名單驗證
檢查輸入資料是否含有<script>
等非法字元。
Encoding
針對輸出做 Encoding,是最根本的解決之道,可以讓 JavaScript 在瀏覽器不被執行。 一些非法字元的編碼如下:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
例如,輸入<script>alert("XSS");</script>
,編碼後會變成:
<script>alert("This is XSS");</script>
如此一來,上述這段編碼後的內容在瀏覽器端會以一般的文字顯示。