我想用我們的代碼阻止XSS,問題是它可能需要JS和html轉義,並且可能有點棘手。跨站腳本問題
下面的示例代碼類似於我們的代碼
<script>
var CURRENT_VALUE = '<img src=1 onerror=alert(1)>';
document.getElementById("valueBox").innerHTML = CURRENT_VALUE;
</script>
讓我們假設CURRENT_VALUE動態插入。那麼在這種情況下我該怎麼做,我知道一個簡單的HTML編碼可能無法正常工作,因爲攻擊者可能會傳遞unicode轉義值,當JS解析器清除它時,它可能會被轉儲到文檔中。
那麼,什麼是正確的做法,
我應該先別JS逃避,只是之前的document.getElementById做HTML逃逸?這將如何工作?
假設CURRENT_VALUE是說十六進制編碼,幷包含/ x027img ...等等
我沒有看到這可怎麼XSS相關Preve(?) nting XSS更重要的是對輸入服務器端的內容進行消毒。如果您點擊「查看源代碼」,上面隱藏了,但它不能防止惡意代碼插入到輸入框或textarea中。 – davidkonrad
我認爲任何客戶端在安全性方面都非常無用。你必須假設它可以被操縱,並處理服務器端正確/期望值的驗證。 –
可以使用服務器端JS轉義,但如果我必須使用服務器端HTML轉義,那麼我需要按順序執行第一個html轉義,接下來由JS轉義,因爲html是最後解釋的,但它可能存在問題當在非html上下文中解釋時,因此我可能必須做服務器端JS轉義,然後是客戶端JavaScript轉義,但我不確定這一點。 – Kalyan