我在W3schools上創建了一個簡單的「自己試試」代碼編輯器,如the one found。望着源,似乎所有的一個人是使用JavaScript的document.write()
命令寫入無論是進入左邊到右邊的iframe textarea的,沒有任何衛生設施:創建一個「試用」代碼編輯器 - 任何安全問題?
function submitTryit() {
var text = document.getElementById("textareaCode").value;
var ifr = document.createElement("iframe");
ifr.setAttribute("frameborder", "0");
ifr.setAttribute("id", "iframeResult");
document.getElementById("iframewrapper").innerHTML = "";
document.getElementById("iframewrapper").appendChild(ifr);
var ifrw = (ifr.contentWindow) ? ifr.contentWindow : (ifr.contentDocument.document) ? ifr.contentDocument.document : ifr.contentDocument;
ifrw.document.open();
ifrw.document.write(text);
ifrw.document.close();
}
那是安全的,本身,還是我錯過w3school's editor內的某些東西,爲了安全起見而做更多事情?
感謝,
安全抵禦什麼?請不要將W3C與w3schools混淆(儘管我確信w3schools完全意圖讓你感到困惑)。 – RobG
安全抵禦什麼?用戶總是可以破解自己。 – Bergi
「eval」的各種形式只是一個問題,如果a)其他用戶可以控制evaled值b)有什麼可以傷害的,就像登錄 – Bergi