繁体   English   中英

PHP安全模式替代方案

[英]PHP safemode alternative

安全模式已弃用为5.3.0。 由于许可错误等原因,我从来没有真正要求它,而是在过去多次发现它有问题。

但是我现在有一个要求,我认为安全模式会做得很好。

我已经构建了一个可以通过模块扩展的Web应用程序。 我计划自己托管系统,并允许付费客户通过实现和编写挂钩到系统各个部分的模块来扩展他们的软件。

我担心的是,通过这样做,我无法确保他们上传的代码不会扫描我花了数年时间设计和测试的基础/框架。 保持代码专有权对我很感兴趣。

  1. 我编写了一个模块分析工具,以确保在第三方模块中不会调用非法方法 - 不容易!

  2. 我在php.ini级别禁用有害函数但这包括fopen()和它的类似 - 这意味着框架将无法调用它自己的include()操作等。

  3. 最后,可悲的是过时的安全模式,限制用户模块无法读取不共享相同ID,组等的文件。

这种事情的推荐方法是什么? 在我的框架上下文中执行之前,没有人工审查或自动分析每个模块?

而不是安全模式,你可以使用php-fpm与chroot,mod_ruid和php-fpm中的每个用户权限,以及php中的opendir限制。 通过这种方式,您可以使安全模式变得更加严格。

就个人而言,我会推荐使用chroot的php-fpm并禁用exec和system等系统功能。 反正那些都是邪恶的。

我在/etc/php/7.0/fpm/php.ini中使用open_basedir绕过了安全模式

删除safe_mode是一件好事。 它是一种虚假的安全感,并且有很多方法可以绕过它。

更好的方法是使用suphp将您的应用程序作为被监禁的用户运行。 这使用操作系统的安全性来保护您的应用程序。 您可以将php代码作为无法访问shell的帐户运行,而不是禁止exec()system() 您可以从该用户chmod 500 -R /拥有的所有内容中删除写入权限,而不是禁止fopen() 或者更进一步,在chroot中运行您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM