MySQL 慢查询日志在我的 MySQL 语句中添加了一些不是来自我的代码的东西,需要帮助弄清楚这一切意味着什么



所以我的主机联系了我,说我的MySQL调用在MySQL服务器上占用了太多时间,他们向我发送了他们所谓的"MySQL慢查询日志",以查看以确定要修复哪些。 似乎消耗最多时间的主要罪犯是这样的:

SELECT parentmessages.* FROM userinfo, parentmessages WHERE parentmessages.parentid='11601' AND SLEEP(3) oRDeR BY 6 #' AND parentmessages.active='2' AND (userinfo.userid='') AND (parentmessages.userid = userinfo.userid)

但是,我不知道下面的部分是什么。 它根本不在我的代码中,似乎是由服务器添加的或其他东西? 或者也许只是添加到日志中的东西?

AND SLEEP(3) oRDeR BY 6 #' 

另一个主要违规者基本上与上述查询相同,但只是添加了以下内容:

AND SLEEP(3)

当我在编写时运行这些 MySQL 语句时(没有上面添加的块),它们运行得非常快:(查询花费了 0.0018 秒。 当我使用添加的块运行它们时,它们需要几分钟,然后超时。 所以我的意思是,如果他们在添加额外内容的情况下运行,那肯定会成为问题所在。 只是非常困惑这些额外的东西来自哪里,因为它不是来自我的代码。

这是一个没有更新的PHP MySQLi函数的旧站点(我知道,我知道,多年来没有太多时间处理它),所以我会怀疑SQL注入或类似的东西,但这些查询都不是用用户提供的数据创建的。

不幸的是,您的网站正在受到SQL注入的攻击。

这些额外/奇怪的字符和命令将由攻击者在您的一个表单上输入。

查找负责参与该查询的页面和代码,并采用适当的 SQL 注入预防技术,例如防止在表单中输入无效字符。

如果您使用的是PHP和MySQLi,那么mysqli::real_escape_string()会有所帮助。

最新更新