- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WEB中SQL注入分析及防范
WEB中SQL注入分析及防范
摘要:当人们享用网络所带来的种种便利的同时容易忽略背后隐藏着的安全隐患,其中SQL注入产生的安全性漏洞就会造成数据被盗等非常严重的后果。通过对几种SQL注入攻击方式的原理过程的分析说明来指出如何利用WEB中的漏洞攻击。通过对这些攻击的说明,提出了防范这些漏洞的简要解决方案。
关键词:SQL语句 访问权限 注入攻击 安全性
一.SQL语句简述
SQL是关系数据库系统为用户提供的、对关系模式进行定义、对关系实例进行操纵的一种语言。在SQL语言的操作中要掌握的就是几个语句、子句和判定词的运用。最基础的操作就是SELECT 语句(查询操作)。其基本格式为:
SELECT what
FROM whichTable
WHERE criteria
在WEB中对数据库的操作,也可以采用以上的一般语法。如ASP编程的时候,SELECT 语句的内容要作为字符串赋给一个变量:
SQL = “SELECT what FROM whichTable WHERE criteria”
若只需要从表中查询得到某些特定列的内容,比如xm,jg,则代码应修改为如下形式:
SQL = “SELECT xm,jg FROM stu”
二.SQL注入攻击方式
SQL注入(SQL Injection)攻击并非植入电脑病毒,它是描述一个利用写入特殊SQL程式码攻击应用程式的动作。也就是利用用户提交可修改的数据,把想要的SQL语句插入到系统实际SQL语句中,以便获得敏感的信息,严重者则可获得服务器控制权限。
下面具体介绍SQL注入几种方法及过程:
(一)、SQL注入漏洞的判断
SQL注入一般存在形式如:HTTP://xxx/a.asp?id=XX(以下用“*”代替“HTTP://xxx”)等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果不进行必要的字符过滤,存在SQL注入的可能性就非常大。
为了全面了解动态网页回答的信息,首选调整IE的配置。把IE菜单-工具-Internet选项-高级-显示友好HTTP错误信息前面的勾去掉。以下以*/a.asp?p=YY为例进行分析,YY(整型或字符串)。
1、整型参数的判断败涂地
通常a.asp中SQL语句原貌大致如下:
select * from 表名 where 字段=YY,可以用以下步骤测试SQL注入是否存在。
①*/a.asp?p=YY’(附加一个单引号),a.asp运行异常;
②*/a.asp?p=YY and 1=1, a.asp运行正常,且与*/a.asp?p=YY运行结果相同;
③*/a.asp?p=YY and 1=2, a.asp运行异常;
如果以上三步全满足,一定存在SQL注入漏洞。
2、字符串型参数的判断
通常a.asp中SQL语句原貌大致如下:
select * from 表名 where 字段=‘YY’,可以用以下步骤测试SQL注入是否存在。
①*/a.asp?p=YY’(附加一个单引号),a.asp运行异常;
②*/a.asp?p=YY nb ... 39;1'=`1', a.asp运行正常,且与*/a.asp?p=YY运行结果相同;
③*/a.asp?p=YY?nb ... 39;1'=`2', a.asp运行异常;
如果以上三步全满足,一定存在SQL注入漏洞。
3、特殊情况的处理
有时会过滤掉单引号等字符,以防止SQL注入。此时可用以下几种方法。
①大小定混合法:由于VBS并不区分大小写,而过滤时通常要么全部过滤大写字符串,要么全部过滤小写字符串,而大小写混合往往会被忽视。如用SelecT代替select;
②UNICODE法:在IIS中,以UNICODE字符集实现国际化,完全可以IE中输入的字符串化成UNICODE字符串进行输入。
③ASCII码法:可以把输入的部分或全部字符全部用ASCII码代替,如U=chr(85)。
(二)、区分数据库服务器类型
一般来说,ACCESS与SQL-SERVER是最常用的数据库服务器,但两种数据库存在不同的攻击方法,以下以这两种数据库为例分别说明。
1、 利用数据库服务器的系统变量进行区分
SQL-SERVER有user,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还
文档评论(0)