首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否允许用户以安全的方式执行PHP代码?

是否允许用户以安全的方式执行PHP代码?
EN

Server Fault用户
提问于 2011-09-16 21:16:40
回答 3查看 492关注 0票数 1

我正在考虑开发一种编程测试站点,用户可以编写PHP代码,然后在服务器上执行它来测试输出。我知道您希望始终阻止用户执行代码,但是是否有一种方法可以设置代码以使系统不受损害?

或者这只是打开了太多的安全漏洞?

EN

回答 3

Server Fault用户

发布于 2011-09-16 21:27:16

这只是一个想法。我只考虑了几分钟。但是其中一种可能的方法是让你的web应用程序将代码作为字符串,并将其发送到虚拟机进行处理。

这样,您就可以防止web应用程序提供站点的其他功能,使其不受用户执行PHP的任意影响。

可以设置虚拟机,以便运行的PHP脚本在运行的文件夹之外没有访问权限,除了接收来自主机的请求并将数据返回到主机之外,也不能访问网络的任何部分。您甚至可以将VM冻结在状态中,以便在重新启动时撤销对它所做的任何更改。

再说一次,这只是一个想法。可能有一些我看不到的坏处。但是,要记住的一件关键事情是,您需要确保主机上的PHP服务器在任何时候都不会执行发送到VM或从VM返回的代码。

票数 3
EN

Server Fault用户

发布于 2011-09-19 17:52:30

为了提高安全性,您必须做一些事情:

  1. 你必须禁用很多关键的php函数,比如eval,.
  2. 您必须配置open_basedir、execution_time等.
  3. 您必须安装php suhosin,fcgi并正确配置它!
  4. 您必须以不同的用户(即测试-用户)的身份运行php,并限制该用户的权限。
  5. 您应该使用SELINUX来保护系统
  6. 您应该使用iptables来限制您的测试用户执行任何不需要的网络操作: iptables -t mangle -A OUTPUT -p tcp -m owner -uid-owner 1001 -j -j REJECT。
  7. 你必须快速更新你的系统软件!:-)
  8. 您还可以设置一个着色环境。

最后,把安全当作洋葱来考虑。在任何一层都要尽力保护你的系统。如果某一层出现安全漏洞,底层应阻止攻击者.

票数 1
EN

Server Fault用户

发布于 2011-09-16 21:23:59

我认为这是可行的,但如果你想以任何安全的方式去做的话,你的工作肯定会被淘汰掉。这本质上就是任何提供PHP的web主机所做的,任何愿意向他们扔点钱的人都会这样做。

您的不同之处在于,它一般只对任何人开放,除非您计划限制对经过身份验证的用户的访问。

从PHP / apache一直到操作系统,您都想了解如何增强您的系统。但是,有许多事情是由一个硬化的系统阻止的,这将限制测试的有用性。

如果你真的这么做的话,我会在你的代码页面上强烈推荐一种人工验证/反机器人机制,比如Captcha / reCaptcha。

如果你对系统安全性不太熟悉,那么我就不会亲自去碰它。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/312367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档