gpt4 book ai didi

php - 此代码中的 eval() 为何不安全?

转载 作者:可可西里 更新时间:2023-11-01 00:15:33 27 4
gpt4 key购买 nike

我使用下面的代码来自动加载和声明类,这样我只需要将类文件放在名为 classes 的文件夹中。 spl_autoload_regsister() 中的部分对您来说似乎是不必要的,但它是作为 WordPress 插件正常工作所必需的。

它使用 eval() 并且我看到很多网页都在谈论使用 eval() 是不好的并且会造成安全漏洞。那么这怎么可能是危险的呢?

$strDirPath = dirname(__FILE__) . '\\classes\\';
$arrClassFiles = array_map(create_function( '$a', 'return basename($a, ".php");' ), glob($strDirPath . '*.php'));
spl_autoload_register(
create_function('$class_name', '
global $arrClassFiles, $strDirPath;
if (in_array($class_name, $arrClassFiles))
include($strDirPath . $class_name . ".php");' )
);

foreach ($arrClassFiles as $strClassName) {
$strClassName_alpha = $strClassName . "_Alpha";
eval("class $strClassName_alpha extends $strClassName {};");
}

print_r(get_declared_classes());

也许,有人可以在文件夹中放一个php代码的文件名?但我认为它不会危及系统。

最佳答案

如果他们可以将类文件命名为 randomclass {}; echo $db_password;//.php,那么你就可以进行代码执行攻击。

我很确定这不是一个有效的文件名,但在制作有效的恶意输入方面,有些人比我聪明得多。

这通常不是您需要敞开心扉的攻击面,因为实际上总是可以通过更好的代码结构来避免。

关于php - 此代码中的 eval() 为何不安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12255271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com