1

評価する必要がある論理式があります。パラメータでパラメーター化されたいくつかの式テンプレートの後、これらの式は次のようになります。

$expr1 = '1 or 0 and not(0 or 0)';
$expr2 = "'editor' == 'editor' and not(0 = 1) and 10 > 5";

そのため、数値、文字列リテラル、論理演算子と代数演算子、およびそれらの間の丸括弧を処理する必要があります。

PHP eval を使用すると、システム関数呼び出しなどの望ましくないセキュリティで保護されていない機能も取得します。

それで、PHPの評価を制限する方法はありますか、それとももっと良い解決策があるのでしょうか?

ありがとう!

4

2 に答える 2

0

わかりました、別の解決策があります。PHP DOMXPath::evaluate を使用して論理式を評価できることに気付きました。そのため、セキュリティ上の問題のない実用的なソリューションを手に入れました。私の問題は解決したと思います:)

于 2012-12-09T19:49:02.890 に答える
0

トークナイザーを使用して、式に関数呼び出しが含まれていないことを確認できます。

例については、より安全な eval() クラスを参照してください。

于 2012-12-05T12:55:52.620 に答える