在线解释器/编译器如何处理恶意代码?

7
3个回答

11

jsFiddle仅运行客户端代码(JavaScript)-它能够伤害的只有您自己的机器(或查看您代码片段的人的机器)。

大多数浏览器都有一些功能来检测不响应的脚本(如无限循环),并提供停止脚本的选项。

然后还有像codepad.orgideone.com这样的网站,它们确实在本地机器上运行代码。

Codepad.org

代码执行由基于geordi的监管程序处理。策略是在ptrace下运行所有内容,并禁用或忽略了许多系统调用。编译器和最终可执行文件都在chroot jail中执行,并受到严格的资源限制。

当你的应用是远程代码执行时,你必须预计会出现安全问题。除了依靠chroot和ptrace监管程序外,我还采取了一些额外的预防措施:

  • 监管程序运行在虚拟机上,虚拟机被防火墙保护,使其无法进行出站连接。
  • 运行虚拟机的机器也受到严格的防火墙保护,并定期从其源映像还原。

谢谢那个codepad的解释,我刚看到jsfiddle,并不知道它只支持js。 - iwek

1

那个特定的网站看起来像是在客户端运行其代码。因此,你无法伤害他们的服务器。

其他网站采用在虚拟机中运行代码的方法。你只需限制虚拟机可以使用的资源,他们已经限制了可能造成的损害。


0
由于像 jsfiddle 这样的网站只有客户端代码(您无法编写服务器端代码),任何糟糕的代码都将影响运行它的浏览器。这不应该对他们的服务器产生任何影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接