基本上,我希望 Apache 在解析 PHP 文件之前检查它们是否符合某些模式。如果这些 PHP 文件符合这些模式,我希望将其他内容替换回发给用户。
有没有办法做到这一点?
答案1
不,没有办法做到这一点。
如果您的用户试图部署恶意代码,您可能需要考虑获取新用户。
您的用例是什么?代码审查应该完全在此流程之外进行。
关于您的以下评论,我还有几点想法:
- 如果您认为可能存在一种自动“病毒扫描程序”类型的方法来做到这一点,那么您会失望的。
- 如果您认为匹配几个简单的正则表达式就足够了,那么您也会失望,因为您需要匹配的正则表达式的数量几乎是无限的。
- 您所能做的最好的事情就是将您的共享托管服务器设计得尽可能安全 - 将每个客户隔离在他们自己的容器中,这样他们造成的任何损害都仅限于他们自己的帐户,而不会扩散到更远的地方。
答案2
预警:我很怀疑你为什么会遇到这个问题。如果你认为潜在的恶意代码可能被放在 apache 服务的目录中,你可能需要重新考虑你当前的 web 服务器设置。
话虽如此,你可以使用PHP 的disable_functions
配置。可能需要禁用的功能:
- 执行
- 系统
- shell_exec
- 弹出
- 允许 url_fopen
- 允许 URL 包含
一个更草率的解决方案是删除与正则表达式匹配的 PHP 文件:
find /var/www -iname '*.php' | xargs egrep -l '(eval|system)\(' | xargs rm
没有测试过,但是,当然,你应该想出自己的命令,并在执行之前确信你理解它。
答案3
我认为你想要完成什么你应该看看mod_security。