0
我有一個博客系統,隨機的人可以發表評論。如果淘氣人嘗試後的Javascript,會出現這種情況:PHP網站防止XSS有點太好
bla bla <script>alert("Hacked")</script>
假作
bla bla <script>alert("Hacked")</script>
我寧願後保持代碼不變,只是曾經有人需要發佈HTML情況。我如何讓第二條線看起來像第一條線,而沒有它真的做任何事情?目前的辦法,我將其過濾是:
$safeMessage = htmlspecialchars($reply['message'], ENT_QUOTES | ENT_HTML401, 'UTF-8');
echo "$safeMessage";
咦?你這樣做的方式恰恰是正確的方法 - 當在瀏覽器中顯示時,它應該顯示''你能澄清哪裏出了問題? –
你的意思是「保持代碼完好?」根據定義,您不能同時過濾掉可能不安全的HTML字符並允許它們通過。如果你的意思是簡單地顯示它,所以它顯示實際的HTML(不是呈現的HTML),那麼你現在擁有什麼錯誤? –
也許你曾經編碼過它(到第二行),然後將元素的'.textContent'(jQ中的'.text')設置爲它?無論如何,使用'.textContent'轉義代碼。 –