Example from here http://en.wikipedia.org/wiki/Code_injection#Preventing_code_injection
Dynamic evaluation vulnerabilities - dynamic variable evaluation
As defined in "Dynamic Evaluation Vulnerabilities in PHP applications": PHP supports "variable variables," which are variables or expressions that evaluate to the names of other variables. They can be used to dynamically change which variable is accessed or set during execution of the program. This powerful and convenient feature is also dangerous.
If the attacker provides "safevar=bad" in the query string, then $safevar will be set to the value "bad".
Tried to do as in example
<?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>
But I can not get $safevar == 'bad'
Please advice why. Trying to understand to know how to protect my own code