php求值函数
如何知道eval()在web服务器中被禁用或启用。了解这一点的php代码是什么?如果在服务器上被禁用,是否有任何php代码可以启用它?php中没有内置任何允许禁用eval的功能(与您可以禁用的其他功能不同) 但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特性php求值函数,php,Php,如何知道eval()在web服务器中被禁用或启用。了解这一点的php代码是什么?如果在服务器上被禁用,是否有任何php代码可以启用它?php中没有内置任何允许禁用eval的功能(与您可以禁用的其他功能不同) 但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特性 PHP中没有内置任何可以禁用eval的功能(与其他可以禁用的功能不同) 但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特
PHP中没有内置任何可以禁用eval的功能(与其他可以禁用的功能不同) 但是,您可以为PHP安装一个名为Suhosin的安全路径,该路径允许您禁用eval,并向PHP添加其他安全特性 您应该能够确定
eval()
是否存在:
编辑
实际上,eval()。然而,这应该是可行的:
<?php
$isevalfunctionavailable = false;
$evalcheck = "\$isevalfunctionavailable = true;";
eval($evalcheck);
if ($isevalfunctionavailable === true) {
echo "\$isevalfunctionavailable is true.\n";
echo var_dump($isevalfunctionavailable);
}
?>
您应该能够确定eval()
是否存在:
编辑
实际上,eval()。然而,这应该是可行的:
<?php
$isevalfunctionavailable = false;
$evalcheck = "\$isevalfunctionavailable = true;";
eval($evalcheck);
if ($isevalfunctionavailable === true) {
echo "\$isevalfunctionavailable is true.\n";
echo var_dump($isevalfunctionavailable);
}
?>
好的,正如前面所说,eval
不太可能被禁用。但为了以防万一,有三种变通方法:
$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);
甚至只是:
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_QUIET_EVAL, 1);
assert("$code");
以及文件系统解决方案:
$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);
所有的工作都相当于一次直接评估。好的,正如前面所说,eval
不太可能被禁用。但为了以防万一,有三种变通方法:
$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);
甚至只是:
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_QUIET_EVAL, 1);
assert("$code");
以及文件系统解决方案:
$eval = create_function("", "$code");
$eval();
file_put_contents($tmp=tempnam("/tmp", "EVAL"), "$code");
include($tmp);
所有工作都相当于直接评估。eval(“echo'Hello World!”;”;好了。典型的安全模式限制会影响exec
和co。但是eval
通常不会被阻止。无论如何,你可以通过使用include(…file\u put\u contents(“tmp”),…)
来解决这个问题,所以招待员真的没有必要禁用它;好了。典型的安全模式限制会影响exec
和co。但是eval
通常不会被阻止。无论如何,你可以通过使用include(…file\u put\u contents(“tmp”,…)
)来解决这个问题,所以主人没有必要禁用它。这总是会失败的,因为eval
是一种语言结构。这就像测试函数是否存在(“foreach”)
我不确定。如果您使用Eval()
进行测试,它可能只会生成一个致命错误。你抓不到那些。您可能要做的是create_函数(“,”eval('test');”)
而不调用它。我相信这会产生一个非致命的错误。嗯,这是一个很好的观点。很遗憾,您不能使用函数\u exists()
测试eval()
。这将始终失败,因为eval
是一种语言构造。这就像测试函数是否存在(“foreach”)
我不确定。如果您使用Eval()
进行测试,它可能只会生成一个致命错误。你抓不到那些。您可能要做的是create_函数(“,”eval('test');”)
而不调用它。我相信这会产生一个非致命的错误。嗯,这是一个很好的观点。太糟糕了,你不能用function\u exists()
测试eval()
。我倾向于同意你的看法。如果这是禁用eval
的唯一方法,则可以使用进行检查。我倾向于同意您的看法。如果这是禁用eval
的唯一方法,则可以使用进行检查。