PHP:使用第三方代码阻止核心更改

问题描述 投票:2回答:1

我开始开发一些东西(自托管 - 每个用户将它安装在他们的服务器上 - 可能是一个共享服务器),允许用户上传其他代码(插件)。

我担心的一个问题是插件更改Core文件。

应用程序的流程如下:

index.php 
  > Core() 
    > (do stuff) 
    > load/execute plugins <- may have code to replace a Core file 
    > (do stuff) 
    > exit

我试图限制插件访问文件或PHP功能。如果插件只允许使用Core类/方法,那就太好了。

因为它是自托管的(并且可能由非开发人员使用)我无法控制系统,apache.conf或php.ini。我只能创建.htaccess文件。

我想到的解决方案:

〜在* .php文件上使用token_get_all()(在插件安装期间)并检查是否有使用chgrp,chmod,chown,copy等功能。但这不太理想,我相信我会想念一些功能。

其他解决方案(来自评论):

x更改文件夹权限 - 可以通过php完成,但插件和Core也无法自行更新

x编辑php.ini以防止使用函数 - 不能。无法访问php.ini。

x使用snuffleupagus包 - 不能。这是一个PHP扩展。

php security plugins
1个回答
0
投票

我担心的一个问题是插件更改Core文件。

将您的Core文件作为signed PHP Archive发送。

我试图限制插件访问文件或PHP功能。如果插件只允许使用Core类/方法,那就太好了。

这是一个非常具有挑战性的问题,远远超出了StackOverflow答案的范围。至少,您需要确保服务器引导命中您的框架(如果您使用的是签名的.phar而不是可变的.php文件,则可以正常运行)。

但是,除此之外,您无法阻止插件在标准库中调用PHP函数。另一种方法可能是构建一个模板引擎(例如Twig),并且只允许使用您自己的特定于域的语言编写插件,该语言不能调用任意PHP函数,只能调用您提供的函数。

© www.soinside.com 2019 - 2024. All rights reserved.