【问题标题】:How to insert php codes into database?如何将php代码插入数据库?
【发布时间】: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


【解决方案1】:

使用real_escape_string 函数转义您的输入数据:http://php.net/manual/en/mysqli.real-escape-string.php

现在您可以安全地创建可以在 SQL 语句中使用的合法 SQL 字符串。

【讨论】:

  • 感谢您的回答。这个功能我知道,但是好久没用了,完全忘记了!
  • 另外我应该把这个添加到你的答案中来完成它:使用htmlspecialchars()在html页面中显示php代码。
  • 正如@Alex 所提到的,一个更好的主意是使用准备好的语句。我的解决方案完全针对您的具体问题。
【解决方案2】:

要在数据库中插入代码 php,请遵循以下选项: 1. 要插入数据,请使用 htmlspecialchars。示例:

$string = '<?php echo "Hello world"; ?>';
htmlspecialchars($string);
  1. 在读取/获取数据之前,使用 htmlspecialchars_decode。示例:htmlspecialchars_decode($string);

    希望这可能对您有所帮助:-)

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 2016-03-22
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多