用户贡献的代码安全性

时间:2010-09-11 22:49:20

标签: security language-agnostic web-applications

我见过一些可以从浏览器运行代码的网站,并在服务器上评估代码。

运行用户提供的代码的应用程序的安全性最佳实践是什么?除了访问和更改服务器的敏感信息。 (例如,使用带有标准库的精简版本的Python) 如何防止DoS像非停顿和/或CPU密集型程序? (我们不能在这里使用静态代码分析)DoSing类型检查系统怎么样?

Python,Prolog和Haskell是建议的例子。

1 个答案:

答案 0 :(得分:1)

“最佳实践”(我真的是唯一一个讨厌这句话的人吗?)可能根本就没有这样做。

如果您确实必须这样做,请将其设置为在虚拟机中运行(我不是指JVM之类的东西;我的意思是托管操作系统的东西)因此很容易从快照(或任何有问题的VM调用它)恢复VM。

在大多数情况下,你需要超越这一点。如果没有一些额外的工作来锁定它,即使是VM也可以使用足够的资源来降低响应速度,因此很难杀死并重新启动它(你通常最终可以,但“最终”很少是你想要的)。您通常还希望设置一些配额来限制其总CPU使用率,可能将其限制为使用单个CPU(并在至少有两台机器上运行它),限制其总内存使用量等。例如,在Windows中,您可以通过在作业对象中启动VM并限制作业对象可用的资源来完成(至少大部分)。