php - SQL注入(inject)攻击——使用mysqli_multi_query()

标签 php mysql mysqli sql-injection mysqli-multi-query

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

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

最佳答案

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

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

一条语句可以读取它不打算读取的数据。或者引发大规模排序,以拒绝服务攻击的形式压垮您的服务器。

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

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

SQL 注入(inject)的解决方案非常简单且易于遵循。我不明白为什么这么多开发人员寻找借口不编写安全代码。

关于php - SQL注入(inject)攻击——使用mysqli_multi_query(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43566951/

相关文章:

php - MySQL 授予用户权限

php - OctoberCMS 如何重写用户插件的 onRegister() 函数?

php - 在带有 % 通配符的 PHP 准备语句中实现 LIKE

PHP:WAITING时间,因此函数直到 x 分钟后才能执行

mysqli - undefined variable : mysqli - PHP OOP

php - APNS PHP 推送通知不工作。超时

php - 查看调用返回结果 x 2

php - 我会通过规范化此表来提高性能吗?

PHP 插入不起作用

PHP 和 MySQLi - 无法通过引用传递参数 2