评估用户代码有哪些安全问题?

Mat*_*ell 5 php security

我想知道实现这样的安全问题PHP evaluator:

<?php eval($_POST['codeInput']); %>
Run Code Online (Sandbox Code Playgroud)

这是在对PHP sandbox消毒DB input等进行消毒等方面并不是一个大问题.

销毁托管文件的服务器的用户是.

我已经看到了Ruby simulators,我很好奇有什么安全明智(至少含糊不清的细节).


谢谢大家.我甚至不确定接受哪个答案,因为它们都很有用.

Owen的回答总结了我怀疑的东西(服务器本身会有风险).

arin的回答给出了潜在问题的一个很好的例子.

Geoff的答案randy的答案反映了一般意见,即您需要编写自己的评估程序来实现模拟类型功能.

Owe*_*wen 18

不要那样做.

他们基本上可以访问你在PHP中可以做的任何事情(查看文件系统,获取/设置任何类型的变量,打开与其他机器的连接以插入要运行的代码等等)


小智 6

这个eval()功能很难消毒,即使你这样做,肯定会有办法解决它.即使你过滤了exec,你需要做的就是以某种方式将字符串粘贴exec到一个变量中,然后做$variable().你需要真正削弱语言,以实现至少某种想象的安全性.


pha*_*ckk 5

如果你有eval()类似的话,可能会遇到很大麻烦

<?php
   eval("shell_exec(\"rm -rf {$_SERVER['DOCUMENT_ROOT']}\");");
?>
Run Code Online (Sandbox Code Playgroud)

这是一个极端的例子,但在这种情况下,您的网站将被删除.希望你的权限不允许它,但它有助于说明清理和检查的必要性.