我去过一些CSS/HTML/JS讨论板,它提供了一个文本框来输入HTML并显示“运行它!”按钮在新弹出窗口中运行HTML。
我还想做一个,这在jquery中很容易:
function try_show_result() {
var code = $("#try-input").val();
if (code !== "") {
var newwin = window.open('','','');
newwin.opener = null; // é˲æ¢代ç ä¿®æâ¹ä¸»é¡µ
newwin.document.write(code);
newwin.document.close();
}
}
但后来我发现了一个安全问题:弹出窗口具有运行任意javascript的所有能力。这样,当另一个经过身份验证的用户在页面上运行一段给定的代码时,它就可以窃取cookie或通过Ajax日志访问仅针对指定用户的某个URL。
有没有一种简单的方法可以避免这种情况?
更新
:我在打开窗口之前添加了newwin.document.cookie=“”,不确定是否更好。