【发布时间】:2017-04-25 12:56:45
【问题描述】:
我正在测试我的 mysql 代码漏洞。
这是php注入:
$myvar = "varname";
$x = $_GET['arg'];
eval("\$myvar = \$x;");
或者任何其他的php代码,比如blow:
<?php mysqli_close($conn); ?>
我的目的是将它们插入数据库但不执行它们。
实际上,这些代码将由用户从 html 输入表单插入到数据库中,我想为用户显示它们。(类似于消息传递)
问题:
问题是当我尝试将它们插入数据库时失败,我的插入查询是这样的:
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) 对其进行了验证,但即使这样也无法解决问题。
我已经搜索过,但在谷歌中没有这个问题的结果!
有人知道如何将代码插入mysql数据库吗?
【问题讨论】:
-
只使用prepared-statemants而不是自己清除插入数据。顺便说一句:在保存到数据库之前,
base64_encode怎么样。那么你就不会有单引号和反斜杠的问题,它们可以是 php 的一部分。 -
还有一个关于
validate()函数的注释:您返回数据不变。通常在 php 中你会这样做$data = stripslashes($data);$data = htmlspecialchars($data);取决于使用的函数。在 php.net 上阅读每个函数的更多信息。
标签: php mysql database insert-into