2015-11-09 41 views
0

我在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內的某些東西,爲了安全起見而做更多事情?

感謝,

+1

安全抵禦什麼?請不要將W3C與w3schools混淆(儘管我確信w3schools完全意圖讓你感到困惑)。 – RobG

+0

安全抵禦什麼?用戶總是可以破解自己。 – Bergi

+0

「eval」的各種形式只是一個問題,如果a)其他用戶可以控制evaled值b)有什麼可以傷害的,就像登錄 – Bergi

回答

0

如果JavaScript並不是以這樣一種方式,它可以呈現比它的作者的其他用戶的瀏覽器仍然存在,你應該罰款。否則,您正在創建一個可用於傳播XSS蠕蟲的平臺。只要允許用戶在自己的頁面上執行任意的javascript,與具有允許用戶執行javascript的調試控制檯的大多數現代瀏覽器一樣安全。

+0

「否則,您正在創建一個可用於傳播XSS蠕蟲的平臺。」 - - 怎麼會這樣?它有很多種類似jsfiddle的網站。 – zerkms

+0

的確,有很多這樣的網站。我不知道他們是否試圖阻止這類事情發生,但是我沒有看到任何關於它們被用於攻擊的事情。據說,任何可以運行javascript的網站都可以測試您的瀏覽器是否存在易受攻擊的插件並嘗試利用它們。 另外,值得注意的是,像jsfiddle這樣的大多數網站都使用iframe來防止javascript干擾外框。 編輯:你可能會覺得這很有趣。 https://en.wikipedia.org/wiki/Blackhole_exploit_kit –