-2

正如我们所知,通常的站点使用类似的函数,mysqli_query()并且 mysql 的 PHP 驱动程序不允许在single->query() 调用中进行多个查询(但您可以在phpmyadmin SQL 运行部分中执行多个查询),因此我们不能直接添加DELETE/UPDATE/INSERT但滥用修改的可能性某些情况下的数据。第一件事是,在这种情况下,我认为 80% 的潜在风险(可能丢失数据)已经消失!&第二个是,依靠这些知识,为什么大多数注入教程都基于并专注于多个查询?

4

2 回答 2

1

80% 的潜在风险(可能丢失数据)已经消失!

这个假设是错误的。

为什么大多数注入教程都基于多个查询?

因为它只是一个简单易懂的例子,一个概念证明。就像一个“如果约翰有 2 个苹果,迈克有 5 个……”。如果真正的迈克不想放过他的苹果,那并不意味着算术全错了。

SQL 注入难题

注射没有难题。
对注射进行沉思是没有意义的。
没有要计算的风险百分比,而只是一个二分法:您的应用程序是否受到损害。
只有一个简单的规则 - 始终正确格式化您的数据,您将永远忘记注入。

于 2013-03-24T12:34:27.197 回答
-1

很长一段时间以来,PHP 都不允许为单个 query() 语句运行多个查询。这只是防止 sql 注入的一部分。您还必须转义您的输入,使用准备好的语句,使您的表名和列难以猜测等等。

最简单的 sql 注入攻击示例确实涉及被欺骗执行多个查询的查询,但显然 php 通过前面提到的限制阻止了许多此类攻击。然而,像子查询这样的事情仍然是可能的,所以它不是万无一失的。我不认为完全不可能使 sql 注入成为可能,因为人们一直在寻找新的方法来欺骗脚本。

您能做的最好的事情就是了解此类攻击是如何进行的,并根据当前公认的最佳实践编写代码以防止此类攻击。如果您已经完成了所有这些并且仍然被黑客入侵,那么可能(但不确定)不是您的 sql 是您安全性中最薄弱的环节。据我了解,黑客更经常使用社会工程技术取得成功。

制作一个不可破解的系统几乎是不可能的,因此您能做的最好的事情就是使其难以破解,因此,不要成为“唾手可得的果实”,或者换句话说,不要成为一个容易的目标。

于 2013-03-24T13:15:37.257 回答