Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 此sql输入验证安全吗?_Php_Mysql_Sql Injection - Fatal编程技术网

Php 此sql输入验证安全吗?

Php 此sql输入验证安全吗?,php,mysql,sql-injection,Php,Mysql,Sql Injection,我目前正在为一个项目开发一个数据库类。我想知道下面的函数中是否有漏洞或错误,允许有人使用MySQL注入 public function sql_validate($var) { if (is_null($var)) { return NULL; } else if (is_string($var)) { return "'" . $this->sql_escape($var) . "'"; } else

我目前正在为一个项目开发一个数据库类。我想知道下面的函数中是否有漏洞或错误,允许有人使用MySQL注入

public function sql_validate($var)
{
    if (is_null($var))
    {
        return NULL;
    }
    else if (is_string($var))
    {
        return "'" . $this->sql_escape($var) . "'";
    }
    else if (is_bool($var))
    {
        return intval($var);
    }
    else
    {
        return $var;
    }
}
下面是为字符串调用的函数sql\u escape

private function sql_escape($string)
{
    if (!$this->db_connection)
    {
        return @mysql_real_escape_string($string);
    }

    return @mysql_real_escape_string($string, $this->db_connection);
}

mysql\u real\u escape\u string
使用最好的转义模式,因此它相当安全

不过,我想提出另一种选择。为什么要创建一个数据库类,因为有几个数据库类使用了更安全的方法准备语句。简而言之,这些工作是通过将SQL逻辑从用户输入的数据中分离出来的

我会建议使用

另外,您应该真正避免在PHP中使用错误抑制
@
。因为这往往会抑制您甚至可能没有预料到的错误


下面的文章相当简单

mysql\u real\u escape\u string
使用任何最好的转义模式,因此它相当安全

不过,我想提出另一种选择。为什么要创建一个数据库类,因为有几个数据库类使用了更安全的方法准备语句。简而言之,这些工作是通过将SQL逻辑从用户输入的数据中分离出来的

我会建议使用

另外,您应该真正避免在PHP中使用错误抑制
@
。因为这往往会抑制您甚至可能没有预料到的错误

下面的文章是一篇相当简单的文章