- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL注入攻击的种类和防范手段IT专家网.pdf
观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过
SQL 注入造成的。虽然前面有许多文章讨论了SQL 注入,但今天所讨论的内容也许可帮助你
检查自己的服务器,并采取相应防范措施。
SQL 注入攻击的种类
知彼知己,方可取胜。首先要清楚SQL 注入攻击有哪些种类。
1.没有正确过滤转义字符
在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个
SQL 语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的
这行代码就会演示这种漏洞:
statement := SELECT * FROM users WHERE name = + userName + ;
这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意
的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的
那样了。例如,将用户名变量(即username)设置为:a or t=t ,此时原始语句发生了变化:
SELECT * FROM users WHERE name = a OR t=t;
如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为
赋值t=t 永远是正确的。
在一些SQL 服务器上,如在SQL Server 中,任何一个SQL 命令都可以通过这种方法被注入,
包括执行多个语句。下面语句中的username 的值将会导致删除“users”表,又可以从“data ”
表中选择所有的数据(实际上就是透露了每一个用户的信息)。
a;DROP TABLE users; SELECT * FROM data WHERE name LIKE %
这就将最终的SQL 语句变成下面这个样子:
SELECT * FROM users WHERE name = a;DROP TABLE users; SELECT * FROM DATA WHERE
name LIKE %;
其它的 SQL 执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注
入完全独立的查询,不过却不会阻止攻击者修改查询。
2.Incorrect type handling
如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻
击。当在一个 SQL 语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是
否为数字型)就会发生这种攻击。例如:
statement := SELECT * FROM data WHERE id = + a_variable + ;
从这个语句可以看出,作者希望a_variable 是一个与“id”字段有关的数字。不过,如果终
端用户选择一个字符串,就绕过了对转义字符的需要。例如,将 a_variable 设置为:1;DROP
TABLE users ,它会将“users”表从数据库中删除,SQL 语句变成:
SELECT * FROM DATA WHERE id = 1;DROP TABLE users;
3.数据库服务器中的漏洞
有时,数据库服务器软件中也存在着漏洞,如 MYSQL 服务器中 mysql_real_escape_string()
函数漏洞。这种漏洞允许一个攻击者根据错误的统一字符编码执行一次成功的 SQL 注入式
攻击。
4.盲目SQL 注入式攻击
当一个Web 应用程序易于遭受攻击而其结果对攻击者却不见时,就会发生所谓的盲目 SQL
注入式攻击。有漏洞的网页可能并不会显示数据,而是根据注入到合法语句中的逻辑语句的
结果显示不同的内容。这种攻击相当耗时,因为必须为每一个获得的字节而精心构造一个新
的语句。但是一旦漏洞的位置和目标信息的位置被确立以后,一种称为 Absinthe 的工具就
可以使这种攻击自动化。
5.条件响应
注意,有一种SQL 注入迫使数据库在一个普通的应用程序屏幕上计算一个逻辑语句的值:
SELECT booktitle FROM booklist WHERE bookId = OOk14cd AND 1=1
这会导致一个标准的面面,而语句
SELECT booktitle FROM booklist WHERE bookId = OOk14cd AND 1=2
在页面易于受到 SQL
文档评论(0)