[英]Stripping out < and > in javascript doesn't quite work
function SanitizeInput(input) {
input = input.replace(/</g, "<");
input = input.replace(/>/g, ">");
return input;
}
document.write(SanitizeInput("Test!<marquee>bibble</marquee>"));
如果將其彈出到jsfiddle.net中,則結果為Test!<marquee>bibble</marquee
而沒有結尾>
誰能解釋我在做什么錯?
編輯:用(和)替換它似乎完美地工作
您的布局/文檔中還必須有其他內容來影響這一點,您的代碼本身可以正常工作, 您可以在此處進行測試 。
你沒做錯什么 您使用的功能確實將所有<
替換為<
和>
與>
。 只是那個document.write將經過清理的文本添加到HTML文檔中,然后實體被轉換回<
和>
。
只需嘗試alert
而不是document.write
。
如果您真的想擁有<
在頁面中可見的情況下,您應該對文本進行“雙重消毒”。
input = input.replace(/</g, "&lt;");
附帶一提,您可以將替換調用鏈接起來,如下所示:
input = input.replace(/</g, "<").replace(/>/g, ">");
希望你覺得這個有用,
阿林
如果您要清理輸入內容,請嘗試類似以下操作-http://xkr.us/articles/javascript/encode-compare/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.