- 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与网络数据库安全
SQL与网络数据库安全
摘 要:有些网络数据库没有过滤客户提供的数据中可能存在的有害字符,SQL注射是利用插入有害字符对网络数据库进行攻击的技术。容易防范,但因特网上仍有惊人数量的存储系统易受这种攻击。
关键词:SQL;SQL注射;网络数据库
中图分类号:TP311.1 文献标识码:A 文章编号:1674-7712 (2013) 22-0000-01
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。由于部分程序员在编写代码的时候,没有对用户输入数据的合法性进行检查和判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些想得知的数据,这就是SQL Injection,即SQL注射,SQL注射已经成为影响网络数据库安全的一大隐患。
SQL注射是从正常的WWW端口访问,表面看来和一般Web页面访问没什么区别,不会引起防火墙的怀疑。如果网站管理员没有查看日志习惯的话,就更不容易发现SQL注射了。SQL注射的手法相当灵活,在注入的时候会碰到很多意外的情况。本文介绍一些SQL注射方法和防范方法。
目前,国内网站用ASP+Access或ASP+SQLServer的占70%以上,PHP+MySQL的占20%,其他的不足10%。一个简单SQL注射的例子:
假设有这样一个网址:http:///showdetail.asp?id=18,如果在这个地址后面键入一个单引号“”,即变成http:///showdetail.asp?id=18,回车后会发现:页面有如下提示:Microsoft JET Database Engine错误80040e14字符串的语法错误在查询表达式“ID=18”中/showdetail.asp,行8。从这个错误提示能看出下面几点:
(1)网站使用的是Access数据库,通过JET引擎连接数据库,而不是通过ODBC。
(2)程序没有判断客户端提交的数据是否符合程序要求。
(3)该SQL语句所查询的表中有一名为ID的字段。
上面所说的是SQL注射最简单的一种,即直接在URL地址后面加上一个单引号。
此方法通常不能成功,不一定每台服务器IIS都返回具体错误提示给客户端,如果程序中加了cint参数语句的话,SQL注射不会成功,服务器会报错,具体提示信息为“处理URL时服务器上出错,请和系统管理员联络。”另外原??是部分对SQL注射有一点了解的程序员,会把单引号过滤掉,如果用单引号测试,是测不到注射点的。
下面列出三个地址:
(1)http:///showdetail.asp? id=18
(2)http:///showdetail.asp? id=18;and 1=1
(3)http:///showdetail.asp? id=18;and 1=2
大家能够看到,三句之间的区别就在于第二句多了“and 1=1”,第三句多了“and 1=2”,其中1=1是一个真命题,永远为True,逻辑上为1;1=2则是一个假命题,永远为False,逻辑上为0。这种方法非常经典,其原理是数理逻辑中关于命题的阐述。
(1)和(2)都能够正常显示,但是(3)会报错(提示BOF或EOF、或提示找不到记录、或显示内容为空)。如何判断网络数据库的类型。
ASP最常搭配的数据库是Access和SQL Server。具体如何判断数据库到底是Access还是SQL Server呢?
SQL Server有一些系统变量,如果服务器IIS提示没关闭,并且SQL Server返回错误提示的话,那可以直接从出错信息获取,方法如下:
http:///showdetail.asp? id=18; anduser0
这句简单语句包含了SQL Server特有SQL注 射方法,其效率极高。它的含义:前面的语句是正常的,重点在“and user0”,我们知道,user是SQL Server的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转换过程中肯定会出错。
提示是:将nvarchar值“visitor1”转换数据类型为int的列时发生语法错误,visitor正是变量user的值,不废力就拿到了数据库的用户名。如果提示的不是“visitor1”,而是sa,那么就拿到了SQL Server数据库的管理员权限,因为在SQL Server中,sa就相当于administrator。
如果IIS设置成不返回错误,那么这个方法就无法获得错误提示,下面在从SQL Server和
您可能关注的文档
- 骨科病区术后恢复室护理运作及人员培训.doc
- 骨肉瘤保肢患者个性化护理对策.doc
- 骨肿瘤反应区基础研究与临床应用.doc
- 骨科老年患者特殊性和护理体会.doc
- 骨肿瘤患者化疗期间焦虑、抑郁情绪与应对方式调查研究.doc
- 骨质疏松性椎体压缩性骨折中西医治疗研究进展.doc
- 骨质疏松性骨折防治.doc
- 骨质疏松症影像学诊断研究现状.doc
- 骨质疏松经药物联合康复理疗疗效分析.doc
- 骶管注射疗法现状及存在问题.doc
- 小学数学课堂人工智能教学实践与评价体系构建教学研究课题报告.docx
- 高中物理实验课教学中的学生合作学习模式探讨教学研究课题报告.docx
- 高中数学实验教学中的实验资源开发与利用研究教学研究课题报告.docx
- 《绿色交通基础设施建设对城市空气质量改善的短期效应评估》教学研究课题报告.docx
- 初中英语语法教学中的跨学科教学与学生应用能力培养研究教学研究课题报告.docx
- 高中数学思维训练教学资源动态定价与优化配置策略研究教学研究课题报告.docx
- 金融科技监管中的金融科技企业合规性监管政策优化研究教学研究课题报告.docx
- 《量子通信技术在金融信息安全传输中的性能优化研究》教学研究课题报告.docx
- 小学课外阅读指导课程效果评价研究教学研究课题报告.docx
- 基于人工智能的小学科学智能教育平台用户科学探究能力培养策略教学研究课题报告.docx
文档评论(0)