2017-11-02 12 views
2

私は何かを開発し始めています(自己ホスト - それぞれのユーザーが自分のサーバーにインストールします - おそらく共有サーバー)ので、ユーザーは他のコード(プラグイン)をアップロードできます。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の拡張です。

+0

サーバーのアクセス許可。所有者が読んで実行するコアディレクトリ。 exec()やsystem()のような危険な機能の使用を防ぐためにphp.iniを編集してください。システム関数がどこで誰に許可されるかを制限するPHPパッケージがあります。 –

+0

私はあなたの提案にいくつかの質問/問題があります: 私が許可を設定した場合:ファイルを書き込めない場合、コアを更新する方法?プラグインはパーミッションを変更できますか? (chmodを使用して) php.iniは自己ホスト型で、apache/php.iniの設定を変更できません.htaccessでは "disable_functions"のみが動作しません。また、nginxのサポートも可能です。クール システム機能の使用を制限するPHPパッケージ - どのパッケージ?これは私が探しているようですが、拡張子にすることはできません このプロジェクトはWordPressのようなzipファイルになりますので、私は制御できません –

+0

権限を持つシステムユーザを使用してコアを更新するには与えられたdirに書き込む。 * nixシステム権限はグローバルグループユーザーであることを覚えておいてください。一部のユーザーは他のユーザーが実行できない操作を行うことができます。 php.iniを持っているので、自分でホストされていればすべてにアクセスできるはずです。実際、システム関数disableはphp.iniの設定です。私がパッケージを見つけることができるかどうかを見てみましょう。ここにあります:https://github.com/nbs-system/snuffleupagus –

答えて

0

私が心配する1つの問題は、コアファイルを変更するプラグインです。

あなたのコアファイルはsigned PHP Archiveとして発送してください。

プラグインのアクセスをファイルまたはPHP関数のいずれかに制限しようとしています。プラグインがCoreクラス/メソッドの使用しか許されていなかった場合は、素晴らしいことです。

これは解決するのが非常に困難な問題であり、StackOverflowの答えの範囲をはるかに超えています。少なくとも、サーバーのブートストラップがフレームワークに当たることを確認する必要があります(変更可能な.phpファイルではなく署名付き.pharを使用している場合はうまくいきます)。

しかし、これを超えて、プラグインが標準ライブラリでPHP関数を呼び出すのを止めることはできません。代わりのアプローチは、テンプレートエンジン(例えば、Twigのような)、あなたが提供するものだけ、任意のPHP関数を呼び出すことができない自分のドメイン特有の言語でプラグインを書くことができます。

+1

pharアーカイブの使用については考えていませんでした。私の場合、同様のこと、コアが読み取ったり実行したりするようなカスタムファイル拡張子についての例があります。 –

関連する問題