SQL注入难题

时间:2013-03-24 12:28:59

标签: php mysql sql-injection

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

2 个答案:

答案 0 :(得分:1)

  

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

这个假设是错误的。

  

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

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

  

SQL Injection Concudrum

注射没有难题 关于注射的思考是没有意义的 没有风险的百分比可以计算,但只是一个二分法:要么你的应用程序被妥协了。
只有一个简单的规则 - 始终正确地格式化您的数据,您将永远忘记注射。

答案 1 :(得分:-1)

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

sql注入攻击最简单的例子确实涉及一个被欺骗执行多个查询的查询,但很明显,php通过已经提到的限制来防止大量此类攻击。但是,像子查询这样的东西仍然是可能的,所以它不是万无一失的。我不认为有可能完全不可能进行sql注入,因为人们不断寻找新的方法来欺骗脚本。

您可以做的最好的事情就是知道如何进行此类攻击,并根据当前接受的最佳做法编写代码以防止此类攻击。如果你已经完成了所有这些并且仍然被黑客攻击,那么可能(但不一定),你的sql不是你安全中最薄弱的环节。根据我的理解,黑客更多地使用社交工程技术取得成功。

制造一个不可破解的系统几乎是不可能的,所以你能做的最好就是让它难以入侵,因此,不是“低悬的果实”,换句话说,不是一个容易攻击的目标。