私は何かを開発し始めています(自己ホスト - それぞれのユーザーが自分のサーバーにインストールします - おそらく共有サーバー)ので、ユーザーは他のコード(プラグイン)をアップロードできます。PHP:サードパーティのコードでコアの変更を防止する
私が心配している問題の1つは、コアファイルを変更するプラグインです。
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ファイルしか作成できません。
ソリューションIについてかかわら:chgrpコマンド、のchmodなどの関数のいずれかの使用がある場合
〜* .phpファイルにいるtoken_get_all()を使用する(プラグインのインストール時に)と確認し、 chown、コピーなどですが、これは理想的ではなく、私はいくつかの機能が欠けていると確信しています。 PHPを通じて行うことができますが、そのプラグインとコアを防ぐために
X編集php.iniの自分自身を更新することはできません -
xは、フォルダのアクセス許可を変更する:(コメント)その他のソリューションは
関数の使用 - できません。 php.iniへのアクセス権がありません。
x使用中snuffleupagusパッケージ - できません。これはPHPの拡張です。
サーバーのアクセス許可。所有者が読んで実行するコアディレクトリ。 exec()やsystem()のような危険な機能の使用を防ぐためにphp.iniを編集してください。システム関数がどこで誰に許可されるかを制限するPHPパッケージがあります。 –
私はあなたの提案にいくつかの質問/問題があります: 私が許可を設定した場合:ファイルを書き込めない場合、コアを更新する方法?プラグインはパーミッションを変更できますか? (chmodを使用して) php.iniは自己ホスト型で、apache/php.iniの設定を変更できません.htaccessでは "disable_functions"のみが動作しません。また、nginxのサポートも可能です。クール システム機能の使用を制限するPHPパッケージ - どのパッケージ?これは私が探しているようですが、拡張子にすることはできません このプロジェクトはWordPressのようなzipファイルになりますので、私は制御できません –
権限を持つシステムユーザを使用してコアを更新するには与えられたdirに書き込む。 * nixシステム権限はグローバルグループユーザーであることを覚えておいてください。一部のユーザーは他のユーザーが実行できない操作を行うことができます。 php.iniを持っているので、自分でホストされていればすべてにアクセスできるはずです。実際、システム関数disableはphp.iniの設定です。私がパッケージを見つけることができるかどうかを見てみましょう。ここにあります:https://github.com/nbs-system/snuffleupagus –