9core.com - 九核技术交流网

九百链
为了更好的解决实际工作中遇到的问题,本站开设了QQ群 ASP+PHP+JSP+.NET①:9793624
ASP+PHP+JSP+.NET②:17775294
网站通告: 新开设QQ群,群号:17775294 九核WEB技术专业论坛 官方QQ群 9793624
搜索: 您的位置主页> 程序开发 > Php技术 >阅读资讯: 在PHP中全面阻止SQL注入式攻击之二

在PHP中全面阻止SQL注入式攻击之二

文章来源:互联网 发表时间:2008-09-09 点击次数

一、注入式攻击的类型

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

可能存在许多不同类型的攻击动机,但是乍看上去,似乎存在更多的类型。这是非常真实的-如果恶意用户发现了一个能够执行多个查询的办法的话。本文后面,我们会对此作详细讨论。

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

如果你的脚本正在执行一个SELECT指令,那么,攻击者可以强迫显示一个表格中的每一行记录-通过把一个例如"1=1"这样的条件注入到WHERE子句中,如下所示(其中,注入部分以粗体显示):

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN


SELECT*FROMwinesWHEREvariety='lagrein'OR1=1;'

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

正如我们在前面所讨论的,这本身可能是很有用的信息,因为它揭示了该表格的一般结构(这是一条普通的记录所不能实现的),以及潜在地显示包含机密信息的记录。

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

一条更新指令潜在地具有更直接的威胁。通过把其它属性放到SET子句中,一名攻击者可以修改当前被更新的记录中的任何字段,例如下面的例子(其中,注入部分以粗体显示):

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN


UPDATEwinesSETtype='red','vintage'='9999'WHEREvariety='lagrein'

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

通过把一个例如1=1这样的恒真条件添加到一条更新指令的WHERE子句中,这种修改范围可以扩展到每一条记录,例如下面的例子(其中,注入部分以粗体显示):

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN


UPDATEwinesSETtype='red','vintage'='9999WHEREvariety='lagrein'OR1=1;'

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

最危险的指令可能是DELETE-这是不难想像的。其注入技术与我们已经看到的相同-通过修改WHERE子句来扩展受影响的记录的范围,例如下面的例子(其中,注入部分以粗体显示):

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN


DELETEFROMwinesWHEREvariety='lagrein'OR1=1;'

45ZU451mh4OjDBKKyHB79MFLKXYIy9gU7JB60BJN

Php
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助