问题标签 [sandbox]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
13058 浏览

java - 如何在沙箱中使用 Rhino for Java 运行 Javascript?

我们的部分 java 应用程序需要运行由非开发人员编写的 javascript。这些非开发人员正在使用 javascript 进行数据格式化。(主要是简单的逻辑和字符串连接)。

我的问题是如何设置这些脚本的执行以确保脚本错误不会对应用程序的其余部分产生重大负面影响。

  • 需要防范无限循环
  • 防止产生新线程。
  • 限制对服务和环境的访问
    • 文件系统(例如:如果一个心怀不满的脚本编写者决定删除文件)
    • 数据库(同样删除数据库记录)

基本上,我需要将 javascript 范围设置为仅包含他们需要的内容,而不再包含更多内容。

0 投票
9 回答
6242 浏览

java - 将算法 C 转换为 Python

我想将一些 C 代码翻译成 Python 代码或字节码。有问题的 C 代码是我所说的纯算法代码:独立于平台,没有 I/O,只有算法和内存中的数据结构。

一个例子是正则表达式库。翻译工具将处理库源代码并生成可在沙盒环境中运行的功能等效的 Python 模块。

您可以推荐哪些具体的方法、工具和技术?


注意:Python C 扩展或 ctypes不是一个选项,因为环境是沙盒的。

另一个注意事项:看起来有一个C-to-Java-bytecode 编译器,他们甚至将 libjpeg 编译为 Java。Java 字节码+VM 与 CPython 字节码+VM 的区别太大了吗?

0 投票
15 回答
58269 浏览

javascript - 是否可以对在浏览器中运行的 JavaScript 进行沙箱处理?

我想知道是否可以对在浏览器中运行的 JavaScript 进行沙箱处理,以防止访问 HTML 页面中运行的 JavaScript 代码通常可用的功能。

例如,假设我想为最终用户提供一个 JavaScript API,让他们定义在“有趣事件”发生时运行的事件处理程序,但我不希望这些用户访问window对象的属性和函数。我能做到吗?

在最简单的情况下,假设我想阻止用户调用alert. 我能想到的几种方法是:

  • window.alert在全球范围内重新定义。我认为这不是一种有效的方法,因为页面中运行的其他代码(即,不是由用户在其事件处理程序中编写的东西)可能想要使用alert.
  • 将事件处理程序代码发送到服务器进行处理。我不确定将代码发送到服务器进行处理是正确的方法,因为事件处理程序需要在页面的上下文中运行。

服务器处理用户定义的函数然后生成要在客户端执行的回调的解决方案也许可行?即使这种方法有效,是否有更好的方法来解决这个问题?

0 投票
2 回答
352 浏览

internet-explorer - 我可以为 Internet Explorer 设置不同的数据目录吗?

在 Google Chrome 中,我可以提供命令行参数 --user-data-dir="..." 让 Chrome 使用不同的目录来存储状态,如 cookie、缓存等。这使得从“新”浏览器轻松加载网页并模拟多个独立用户成为可能。

如何使用 Internet Explorer(6、7 或 8)做同样的事情?

编辑:看起来 IE 总是使用当前用户的配置文件,所以你必须在系统上设置多个用户并在它们之间切换。多么痛苦。

0 投票
7 回答
2059 浏览

web-applications - 如何在不安装的情况下尝试新的语言或框架?

存在如此多的语言和框架,并且不断出现新的语言和框架,我没有时间下载、安装和配置每一个来评估它。过去,我遇到过允许将代码写入或粘贴到窗口中并在浏览器中实时查看结果的 web 应用程序,通常是在教程设置中。

对于给定的技术,您最喜欢哪些沙盒站点?

编辑: @fretj 提供了优秀的Google Code Playground的链接(+1 点赞),但我认为这只是为了试验 Google 自己的应用程序(搜索、地图、地球、语言等)。但事实证明,它包含一些隐藏的宝石:除了他们的应用程序之外,您还可以尝试他们托管的许多 Javascript 库,包括jQueryjQuery UIMooToolsDojoPrototype Scriptaculous

它们都隐藏在“Pick an API”框中的“库”类别下。我忽略了这个类别,因为我认为它是用于一个名为 Google Libraries 的应用程序。Javascript 本身也有一个 Javascript 类别。

0 投票
2 回答
1016 浏览

php - PHP5 或替代方案中的沙箱建议?

我一直在慢慢地从事一个人事项目,以使用 extjs 作为我的前端来运行类似 webmud 的游戏。我做出的设计选择之一是允许用户为游戏逻辑生成评估代码。因此,当玩家进入一个新的“房间”时,会调用一些状态脚本,如“玩家以前来过这里吗,如果他们在这里,他们是否有 x 个库存物品”,然后做出相应的响应。此外,基本的房间“动作”将被硬编码( go N/S/E/W ),但高级动作将作为相同的用户生成的评估脚本可用。

最初我打算偷懒并使用评估的 PHP 来处理这个逻辑,但我的偏执感正在发挥作用。所以我发现的两个替代方案是 runkit_sandbox,但它不支持主线程和沙箱之间的对象交换(只是简单的数据类型和数组)或者使用 ecmascript 作为我的游戏逻辑http://ejohn.org/blog/spicing-up-embedded-javascript/

两者的优缺点是,使用 runkit,我可以以极大的速度锁定脚本,而 ecma 解释器允许我有选择地将变量、函数和可能的对象绑定到 javascript 运行空间,但它的仍处于测试状态,我还没有看到它运行得如何。

这些是用于选择还是有其他我不知道的东西可能是更好的选择?环境:linux、PHP-CGI 5.3 或作为谷歌应用引擎。

0 投票
2 回答
6241 浏览

java - 如何为各种 Java 类授予不同的权限?

我有一个 Java 应用程序,我想让它可扩展。为了创建扩展,我们公司的开发人员将编写一个实现特定接口的 Java 类。他们可能还希望编写相关的辅助类。我想将这些扩展加载到应用程序中而不会中断。

我想将此类可以执行的操作限制为以下内容:

  1. 调用应用程序 API 中的方法(这将是构造函数的参数)
  2. 在同一个包中创建其他对象的实例(因此扩展类的作者可以使用其他类来完成工作)。

当调用该类时,传入的 API 对象已经定义了一个“客户”并将其存储为成员变量。它将使用它来限制通过 API 访问该客户的数据。

我不希望这些类做一些事情,比如访问数据库、写入磁盘或做其他事情等。这主要是依赖管理和封装的努力,因为同一个开发团队将有权编写扩展和核心系统。

有这种模式吗?我在正确的轨道上吗?

0 投票
7 回答
12507 浏览

php - 有没有办法从 php 中在沙箱中执行 php 代码

我想从 php 执行一个 php 脚本,它将使用不同的常量和已定义的不同版本的类。

是否有一个沙箱 php_module 我可以:

代替

还是proc_open()是唯一的选择?

PS:该脚本无法通过网络访问,因此 fopen(' http://host/script.php ') 不是一个选项。

0 投票
1 回答
213 浏览

audio - Adobe AIR 1.5 沙盒 + 主板扬声器

我很好奇是否可以通过 AIR 访问您的主板 PC 扬声器?

它适用于警报类型的程序,并且希望音高控制不仅仅是简单的哔哔声。这可以通过 AIR 实现吗?

或者,如果不在任何基于 Web 的框架中?似乎有点棘手,所以我很想知道是否有人有解决方案。谢谢!

0 投票
1 回答
416 浏览

javascript - 安全、可沙盒化的用户公开编程语言/环境?

除了为我的网站提供 API 之外,我还想为用户提供编写可以在我的服务器上运行的简单脚本的能力。脚本将有权访问用户拥有的对象,并能够操纵、修改和以其他方式处理其数据。

我希望能够在精细级别限制这些脚本占用的资源(例如,最大执行时间应该是 100 毫秒)。我还想确保一个安全的沙箱,这样每个用户只能访问一组有限的数据和资源,并且不能访问磁盘、其他人的数据等。

通常,脚本会非常简单(例如,创建符合特定条件的值的总和或平均值),并且它们通常会在模板中使用(例如,用平均值填充此单元格或 html 元素的值或和)。

理想情况下,我想使用一种众所周知的常用编程语言的沙盒子集,以便用户轻松上手。后端是用 Python 编写的,因此基于 Python 的语言可能会有好处,但我对其他语言和技术持开放态度。由于其简单的性质和常见的可用性,Javascript 也很有吸引力。

这些语言应该支持创建 DSL 和库。

目标受众是基于 Web 的应用程序的一般用户群,不一定是非常技术性的。换句话说,它不是针对具有任何特定编程语言的特定知识的基础。我的期望是一部分用户将创建将被大多数人使用的脚本。

对于语言和技术有什么想法或建议吗?其他人尝试这个的任何例子以及他们遇到的成功和失败?