- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作者:彭泉
单位:北京航管科技有限公司研发部
联系电话:
电子邮件:
地址:
邮编:100085
空管信息化建设中Web应用程序常见安全问题及解决方案
彭泉
(北京航管科技有限公司 研发部,防火墙和补丁管理已逐渐走向规范化,各类网络设施应该是比以往更全。但不幸的是,目前有70%的黑客袭击事件都发生在应用程序方面Web网站应用层面。网站的工具很多,根本不必局限于浏览器,从最低级的字符模式的原始界面(例如telnet),到CGI脚本扫描器、Web代理、Web应用扫描器,用户可能采用的攻击模式和手段很多直接应用层面对Web网站。用户输入的主要来源是HTML表单中提交的参数,如果不能严格地验证这些参数的合法性,就有可能危及的安全。’ or ‘1’= ‘1作为用户名和密码,造成应用程序中代入参数username、password的用户验证SQL语句”SELECT * FROM user WHERE username=’username’ AND password=’password’ ”变为” SELECT * FROM user WHERE username=’username’ AND password=’ 1’ or ‘1’= ‘1’ ”。
收稿日期:2007-3-1
作者简介:彭泉(1976-),男,内蒙古呼和浩特人,北京航管科技有限公司。
由于多了 ‘1’= ‘1’这个true值的存在,使得(任意条件|true=true)情况出现,导致用户名和密码的查询条件成为摆设。更为严重的是,这种查询会按数据库的记录顺序返回所有的记录,并且应用程序中会用第一条作为查询结果来确定登录用户的权限。而大多数数据库的用户表中第一条保存的是超级管理员的用户信息和权限信息。
另外输入数据的长度无限制可能造成内存泄露的安全威胁,或者输入数值型参数的类型不加限制,可能导致字母型的字符串的输入,使应用程序出现问题。
安全建议为约束、拒绝和净化的输入因为数据不合法的情况很多,难以详尽列举与通过查找已知的问题字符来验证数据相比,验证数据是否为已知的有效类型、模式和范围要容易得多。详尽地定义每一种数据格式,例如缓冲区长度、整数类型等验证数据的类型、长度、格式和范围。对于字符串输入,使用正则表达式限制用户输入的值域必须匹配特定的表达式。有时,需要进行净化处理。其中一个例子就是对数据进行编码,使其成为安全数据。SQL注入式攻击是指利用设计上的漏洞,在目标服务器上运行Sql命令以及进行其他方式的攻击可以在输入域中插入特殊字符net user、exec master.dbo.xp_cmdshell、net localgroup administrators、select、”、 :”、“”、“%”、insert、delete from、drop table、update等等,从而改变SQL查询的本意,欺骗数据库服务器执行恶意的查询。SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES --。系统表INFORMATION_SCHEMA.TABLES包括了这台服务器中所有表的信息至于TABLE_NAME区域就包括了每一个表的名称。”SELECT * FROM info WHERE id=1 AND param1=’param1’ AND param2=’param2’”,那用户新加的SQL询问请求为:SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES --,--使” AND param1=’param1’ AND param2=’param2’”变成了注释,则服务器接到请求数据后必将返回数据库的第一个表名。使用UNION子句将请求字符串加入整数之后,MS SQL SERVER会尝试转换该字符串为整数值。不能把字符串(nvarchar)转为整数型(int)时,就会产生错误。服务器会显示如下错误信息: Microsoft OLE DB Provider for ODBC Drivers error 80040e07
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value table1 to a column of data type int. / search.asp, line 5。
于是这条错误信息显示了转换出现错误时的所有相关信息,也包括用户需要的表名。用户可以在这个语句上作其它的SQL变化,查到更多的表名和表中的字段名称。
如果该ASP应用系统程序运用的是MS SQ
文档评论(0)