我正在制作一个简单的"自己试试" W3schools上的the one found代码编辑器。查看源代码,似乎所有人都使用JavaScript的document.write()
命令将输入到左边的textarea的内容写入右边的iframe,没有任何卫生条件:
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内部为了安全而做更多事情的事情?
谢谢,
答案 0 :(得分:0)
如果javascript没有以这样的方式持久存储,它可以呈现给作者以外的用户的浏览器,那么你应该没问题。否则,您将创建一个可用于传播XSS蠕虫的平台。只允许用户在自己的页面上执行任意javascript并不比使用调试控制台允许用户执行javascript的大多数现代浏览器安全。