在线代码解释器/编译器(jsfiddle.net,jsbin.com,ideone.com,codepad.org等)如何处理恶意代码,例如无限循环?< / p>
答案 0 :(得分:11)
jsFiddle仅运行客户端代码(JavaScript) - 它可以伤害的唯一机器是您(或查看您小提琴的人)。
大多数浏览器都有适当的位置来检测无响应的脚本(如无限循环),并为您提供暂停脚本的选项。
然后有codepad.org和ideone.com等网站,其中做在本地计算机上运行代码。
代码执行由基于geordi的主管处理。策略是在ptrace下运行所有内容,不允许或忽略许多系统调用。编译器和最终可执行文件都在chroot jail中执行,具有严格的资源限制。
当您的应用程序是远程代码执行时,您必须预料到安全问题。我没有依赖chroot和ptrace主管,而是采取了一些额外的预防措施:
- 管理程序进程在防火墙的虚拟机上运行 这样他们就无法制作 传出连接。
- 运行虚拟机的计算机也严重防火墙, 并从他们的源图像恢复 周期性。
答案 1 :(得分:1)
该特定网站看起来像是在客户端运行其代码。所以你不能伤害他们的服务器。
其他网站采用在虚拟机中运行代码的方法。您可以限制虚拟机可以占用的资源,并限制可能造成的潜在损害。
答案 2 :(得分:0)
由于像jsfiddle这样的网站只是客户端代码(你不能编写服务器端代码),任何不良代码都会影响运行它的浏览器。它根本不应该影响他们的服务器。