2013-06-22 32 views
0

注意:我一直无法在网站上发现任何疑问(如果存在)将其作为复制品关闭启用用户输入javascript代码

对于外面的应用程序,我们有一个基于浏览器的客户端使用JavaScript。我们的应用程序遵循客户端服务器体系结构,但仅部署在前提下,即不暴露于Web。 我(使用javascript)有点类似,在基于桌面的应用程序(如MATLAB)提供

  1. 是否安全,允许用户脚本想着用户提供有限的脚本支持的。
  2. 什么是落实安全的方式(EVAL,利用IFRAME等)
+3

用户无论如何都可以编写脚本,他不必问你。您的网站运行在_his_计算机上的应用程序中,他可以运行用户脚本。至于安全 - [有一种方法(网络工作者)](http://stackoverflow.com/questions/10653809/making-webworkers-a-safe-environment)。然而,它涉及IE10 +(或另一个现代浏览器)(使用webworker与白名单) –

+0

@BenjaminGruenbaum Yhanks如果它是不可能使用网络工作者什么是下一个最安全的替代 – Gaurav

+0

下一个最好的事情可能是[caja](https: //code.google.com/p/google-caja/)。另一种选择是让用户在虚拟机中运行JS(这会让脚本变慢,并且很难与用户代码交互,但如果我是你,我会完全避免它。 –

回答

1

从安全的角度来看:在网页上运行脚本是没有问题的,用户已经可以做到这一点按f12开放控制台。

问题是,如果您允许用户将js保存到您的db,然后由另一个用户在页面上加载。

想象一下,如果您的评论系统允许script标签,潜在恶作剧现在可以执行用户可以执行的任何功能。

甚至锚标记<a href="javascript:pageFunction()">click on me</a>

如果它只是一个用户,我将脚本追加到身体。

var scr = document.createElement("script"); 
scr.textContent = 'alert("hi")'; 
document.body.appendChild(scr);