2013-03-24 105 views
-2

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

+0

你确定大部分教程都是关于多重查询的吗? – 2013-03-24 12:41:36

+0

@silentboy,如果我信任我的眼睛,是的 – revo 2013-03-24 12:45:01

+0

然后,也许你已经看到刚刚在这个主题上发布1/2教程的博客的教程。我认为大多数注射剂都是基于消毒 – 2013-03-24 12:51:17

回答

1

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

这个假设是错误的。

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

,因为它只是一个简单易懂例如,概念一个证明。就像一个“如果约翰有两个苹果和迈克五...”。如果真正的迈克不想让苹果吃饱,这并不意味着算术全是错误的。

SQL注入Concudrum

有针剂NO难题。
注射时没有意思。
没有风险的百分比计算,但只是一个二分法:或者你的应用程序是否被破坏。
只有一个简单的规则 - 总是正确地格式化数据,并且您将永远忘记注射。

+0

我没有说过使用多个查询来演示一个'如何做'是错误的和错误的!我说过,为什么他们在实际工作中专注于多个查询,单个查询是最常用的查询! – revo 2013-03-24 12:41:54

-1

很长时间以来,PHP一直禁止针对单个查询()语句运行多个查询。这只是防止sql注入的一部分。你也必须逃避你的投入,使用准备好的陈述,使你的表名和列很难猜测等等。

SQL注入攻击的最简单的例子确实涉及到一个查询被欺骗执行多个查询,但显然PHP通过已经提到的限制防止了很多这样的攻击。但是,子查询之类的事情仍然有可能,所以这不是很好的证明。我认为不可能让sql注入完全不可能,因为人们不断寻找诱骗脚本的新方法。

您所能做的最好的事情就是知道如何完成这些攻击并根据当前接受的最佳实践编写代码以防止此类攻击。如果你已经完成了所有这些工作并仍然遭到黑客入侵,那么可能(但不是肯定)它不是你的SQL,而是你的安全性中最薄弱的环节。据我所知,更多的时候黑客通过社交工程技术获得成功。

制作一个不可破解的系统几乎是不可能的,所以你可以做的最好的事情是让它很难被破解,因此,不是“低挂的果实”,换句话说,不是一个简单的目标。

+0

为什么选择投票?我没有回答这个问题吗? – starshine531 2013-03-24 13:20:36

+0

tnx为答案,我没有足够的声誉downvote,但是如果我有,我也不会downvote。 – revo 2013-03-24 13:58:53