eval 関数は php の関数であり、システムコンポーネント関数ではありません。php.ini の disable_functions で無効にすることはできないため、php_function ではありません。
eval() は PHP のセキュリティにとって非常に破壊的です。
を防ぐためには通常は使用されません。コードは次のとおりです | コードをコピー |
使用例
コードは次のとおりです | コードをコピー |
|
この例の戻り値は
この $string には $name が含まれています。
このカップにはコーヒーが入っています。
または、より高度なものは
コードは次のとおりです | コードをコピー |
$str="hello world"; //例えば元の計算結果です $code= "print('n$strn');";//これはデータベースに保存されたphpコードです echo($code);//結合されたコマンドを出力し、str文字列が置き換えられて完全なphpコマンドが形成されますが、実行されません eval($code);//このコマンドが実行されました ?>; |
上記のコーヒーの例では、eval で最初に文字列が置換され、次に置換後に完全な代入コマンドが実行されます。
ドアを壊すようなポニーは禁止されるべきです
インターネット上の多くの人は、disable_functions を使用して eval を無効にするのは間違っていると言っています
実際、eval() は関数ではなく言語構造体であるため、php.ini で disable_functions を使用して eval() を無効にすることはできません
evalを無効にしたい場合は、PHP拡張機能Suhosinを使用できます
Suhosinインストール後
php.iniにSuhosin.soをロードし、
suhosin.executor.disable_eval = onを追加します以上です 要約すると、PHP では PHP の eval 関数を無効にすることはできず、プラグインのみを使用できます
http://www.bkjia.com/PHPjc/632829.html