jsFiddle如何在不危险的情况下允许并执行用户定义的JavaScript?

bul*_*ley 22 javascript security user-input eval cross-domain

我一直在研究JS库,并希望在Github上设置一个演示页面,例如,用户可以定义自己的回调并执行命令.

我知道" eval()是邪恶的",我可以看到eval()脚本是多么盲目导致XSS和其他安全问题.我正在尝试制定一些替代方案.

我真的很喜欢jsFiddle的互动性.我已经看了他们的来源,但希望有人可以在这里列出jsFiddle如何允许并执行用户定义的JavaScript而不会有危险.只要它不涉及第三方echo服务器,我希望我能模仿这种方法.

SLa*_*aks 27

jsFiddle在单独的域上执行用户脚本http://fiddle.jshell.net(尝试并查看).
因此,它不能与父框架交互,也不能窃取cookie.

实际上,您可以在没有单独服务器的情况下执行此操作,方法是将静态页面放在一个单独的域中,该域从Javascript中的查询字符串中读取.
你可以使用页面标题回复(敌人也可以).