2011-10-27 5 views
0

組み込みのphp関数へのアクセスをロックする方法はありますか?例えばrmdir()です。他の関数/メソッド/オブジェクトにアクセスする権限がありますか?PHP関数をビルドするためのアクセスを指定する

+0

あなたはそれをしたいと思うのはなぜか分かりますか? –

答えて

0

に組み込み関数のいずれかへのアクセスを制限することはできませんそれ以外の場合はあなただけのユーザーに機能を無効にすることができますスペース。

あなたはそれはあなたが望む何でも行うことができますrmdir()上書きしたら:、何もしないだけで特定のディレクトリで働く、セッション変数セットなどがある場合にのみ動作を...

私は試していません以前はADPでしたが、override_functionrename_functionを使用することもできます。 rmdir()の名前をrmdir_hidden()に変更し、組み込み名を上書きして特定の条件で新しい名前を呼び出すことができます。 rmdir_hidden()を呼び出すことは依然として可能ですが、の場合は、名前が変更されたことがわかっている場合にのみとなります。

ところで - 私は、PHPで組み込み関数を再定義することは本当に良い考えではないと思います。これを実装する前に、あなたがやっていることとなぜそれをやっているのかをよく見てみるべきでしょう。私が取り組んできたすべてのPHPプロジェクトでは、組み込み関数のオーバーライドを見たことがない、または考えていません。

3

http://php.net/manual/en/ini.core.php

チェックdisable_functionsプロパティ:

disable_functions

は、このディレクティブを使用すると、セキュリティ上の理由から、特定の の機能を無効にすることができます。カンマで区切られた の関数名のリストをとります。 disable_functionsはセーフモードの影響を受けません。

このディレクティブを使用して内部機能のみを無効にすることができます。 ユーザー定義関数は影響を受けません。

このディレクティブは、php.iniに設定する必要があります。たとえば、httpd.conf内で を設定することはできません。

0

php.iniでdisable_functionsを探します。

1

disable_functionsconfiguration parameterがあります。しかし、いったん機能がこのルート経由で無効にされると、再度有効にすることはできません。その向こう

、あなたはあなたがrunkit_function_redefineで関数をオーバーライドすることができますが、php.iniでrunkit.internal_overrideをも設定する必要がありますPHP

0

disable_functionsはグローバルなので、最後の手段としてのみ使用することをお勧めします。

rmdir()やその他のファイルシステムの機能の場合、あなたが望んでいないファイルやフォルダを変更する権限がユーザーPHP(おそらくApache)で実行されていることを確認できます。

より一般的な考察として、信用できない人にコードを実行させることを許可しているなら、あなたのデザインを再考したいかもしれません!

関連する問題