1

来自这里的示例 http://en.wikipedia.org/wiki/Code_injection#Preventing_code_injection

动态评估漏洞 - 动态变量评估

正如“PHP 应用程序中的动态评估漏洞”中所定义的: PHP 支持“变量变量”,这些变量是评估为其他变量名称的变量或表达式。它们可用于在程序执行期间动态更改访问或设置的变量。这种强大而方便的功能也很危险。

如果攻击者在查询字符串中提供“safevar=bad”,那么 $safevar 将被设置为值“bad”。

试图做的例子

<?php
$safevar = "0";
$param1 = "";
$param2 = "";
$param3 = "";
# my own "register globals" for param[1,2,3]
foreach ($_GET as $key => $value) {
echo  $key = $value. '<br>';
//echo  $key = htmlspecialchars($value, ENT_QUOTES, 'UTF-8'). '<br>';
}

echo $safevar;
if ($safevar == 'bad') {
echo 'may harm<br>';
}
?>


<form action="<?php echo (htmlspecialchars($_SERVER["PHP_SELF"])) ?>" method="GET">
<input type="text" name="username2" value="<?php echo htmlspecialchars($_GET['username2']); ?>">
<input name="update2" type="submit" id="update2" value="Update2">
</form>

但我无法得到$safevar == 'bad'

请告知原因。试图了解如何保护我自己的代码

4

0 回答 0