我正在测试我的mysql代码漏洞 这是php注入:
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
或任何其他PHP代码,如打击:
<?php mysqli_close($conn); ?>
我的目的是将它们插入数据库但不执行它们
Actualy这些代码将由用户从html输入表单插入到DB中,我想为用户显示它们。(像消息一样)
的问题:
问题是,当我尝试将它们插入到数据库中时,它会失败,我的插入查询是这样的:
mysqli_query($conn,"INSERT INTO table (usr,id,message,date) VALUES ($usr,'$id','$message','$date')");
代码位于$message
我还应该添加这个验证功能:
function validate($data)
{
stripslashes($data);
htmlspecialchars($data);
htmlentities($data);
strip_tags($data);
addslashes($data);
return($data);
}
在将$message
插入数据库之前,我已通过此函数validate($message)
对其进行了验证,但即使这样也无法解决问题。
答案 0 :(得分:0)
使用real_escape_string
函数转义输入数据:http://php.net/manual/en/mysqli.real-escape-string.php
现在,您可以安全地创建可在SQL语句中使用的合法SQL字符串。
答案 1 :(得分:0)
要在数据库中插入代码php,请遵循以下选项: 1.要插入数据,请使用htmlspecialchars。例如:
$string = '<?php echo "Hello world"; ?>';
htmlspecialchars($string);
在读取/获取数据之前,请使用htmlspecialchars_decode。示例:htmlspecialchars_decode($string);
希望这可以帮到你: - )