Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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 e{背景:111;颜色:白色;边框:1px实心#000;-moz盒影:2px 2px 8px#000;-webkit盒影:2px 2px 8px#000;盒影:2px 2px 8px#000;} ]]> 布尔值 是的 1._Php_Mysql_Vbulletin - Fatal编程技术网

Php e{背景:111;颜色:白色;边框:1px实心#000;-moz盒影:2px 2px 8px#000;-webkit盒影:2px 2px 8px#000;盒影:2px 2px 8px#000;} ]]> 布尔值 是的 1.

Php e{背景:111;颜色:白色;边框:1px实心#000;-moz盒影:2px 2px 8px#000;-webkit盒影:2px 2px 8px#000;盒影:2px 2px 8px#000;} ]]> 布尔值 是的 1.,php,mysql,vbulletin,Php,Mysql,Vbulletin,我在这段代码中看到的唯一潜在问题是,查询是通过串接字符串而不是使用准备好的语句建立的,例如: $quoteduserid = $vbulletin->db->query_first("SELECT userid FROM " . TABLE_PREFIX . "user WHERE username = '" . $vbulletin->db->escape_string(htmlspecialchars_uni($username[0])

我在这段代码中看到的唯一潜在问题是,查询是通过串接字符串而不是使用准备好的语句建立的,例如:

        $quoteduserid = $vbulletin->db->query_first("SELECT userid FROM " . TABLE_PREFIX . "user
        WHERE username = '" . $vbulletin->db->escape_string(htmlspecialchars_uni($username[0])) . "'");
这会使查询受到潜在的sql注入攻击

我在代码中看到采取了预防措施,例如where子句中的
username
由以下内容组成:

username = '" . $vbulletin->db->escape_string(htmlspecialchars_uni($username[0])) . "'"
用户名
被转义为
db->escape\u字符串
,用于防止注入攻击。但是该函数中的错误可能会导致代码不安全

唯一推荐的、防弹的查询方法是使用准备好的语句

这里是你的链接

准备好的语句允许您将查询中使用的参数(例如用户名)直接传递给mysqli或pdo。使用这种方法,参数中的一个或多个字符序列无法“中断”查询,因为当通过串联静态字符串和(转义的)变量值建立查询时,可能会发生这种情况


如果您想改进代码,您必须在“准备好的语句形式”中替换每个查询

准备好的语句查询很容易(只需检查
$vbullettin->db
是否是mysqli或PDO连接,以使用正确的方法)


由于必须传递参数unescaped,您应该检查
$vbulletin->db->escape_string
实际做了什么(在本例中),以便数据库中存储的数据保持其格式。

有什么方法可以联系到您吗?电子邮件或任何形式的contact@user3693856,嗨,对不起,目前我没有透露我的联系方式。不管怎样,如果你在上面的问题上需要帮助,我帮不了你,因为我现在太忙了。当然,如果我的答案中有不清楚的地方,就指出它,我会尽我所能改进它。遗憾的是,我不是mysql专家。有什么建议可以联系自由职业者这样的人吗?我使用了freegorer.com,即使在解释了你所说的之后,也没有人理解我需要什么。@user3693856老实说,我不太擅长寻找程序员,这对我来说也是个问题。无论如何,您应该首先搜索PHP开发人员。既然你来了,你可以看看
username = '" . $vbulletin->db->escape_string(htmlspecialchars_uni($username[0])) . "'"