SQL——注入攻击——mysqli_multi_query()的使用

Posted

技术标签:

【中文标题】SQL——注入攻击——mysqli_multi_query()的使用【英文标题】:SQL - Injection attack - the use of mysqli_multi_query() 【发布时间】:2021-12-11 07:16:57 【问题描述】:

我现在正在学习 mysql,它涉及的主题之一是处理用户输入时的安全问题 - 一个问题是注入攻击。我试图复制书中演示的攻击,例如添加查询$query = "select * from temp_table; drop table temp_table,我使用了mysqli_query($connection,$query)。什么都没发生。我改为使用mysqli_multi_query(),发现它执行了两个语句。最后我发现mysqli_query每次只运行一个查询。

我的问题是,如果我使用mysqli_query,理论上来说,系统不应该担心额外的语句注入攻击吗?或者,即使服务器使用mysqli_query,用户还有其他方式可以运行附加语句吗?

首先感谢您的帮助和建议!

【问题讨论】:

"系统不应该担心额外的语句注入攻击吗?" --- 没错。这就是关于“小圆桌”的漫画是乌托邦的原因。 请阅读这个答案:***.com/questions/60174/… 【参考方案1】:

确实,基本的mysqli_query() 只会运行一个语句。因此,您不必担心 SQL 注入攻击会欺骗您的应用程序运行多个语句。

但是一个语句可以包含一个子查询,或者一个SELECT... UNION SELECT...

一个语句可以读取它不打算读取的数据。或者导致一个旨在压倒您的服务器的大规模拒绝服务攻击。

或者它可能只是一个错误,而不是恶意攻击。

SELECT * FROM Users WHERE last_name = 'O'Reilly'; -- woops!

SQL 注入的解决方案非常简单,易于理解。我不明白为什么这么多开发人员找借口不写安全代码。

【讨论】:

当你的语句是select * from users where loginID = 'blah' and password = 'blah'并且用户输入blah' or 1=1时也可以产生问题

以上是关于SQL——注入攻击——mysqli_multi_query()的使用的主要内容,如果未能解决你的问题,请参考以下文章

sql注入攻击的原理

如何防止sql注入攻击?

求教谁给讲讲SQL注入攻击的步骤

针对sql注入攻击,都有哪些防范措施

什么是SQL注入式攻击 如何防范

sql注入攻击的原理(sql注入攻击防范)