• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
SQLServer讲堂:加密与SQL注入
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
SQLServer讲堂:加密与SQL注入
软件发布 SQLServer讲堂:加密与SQL注入
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 认证考试 >> 系统工程师 >> SQLServer讲堂:加密与SQL注入

SQLServer讲堂:加密与SQL注入

添加时间: 2007-4-9 3:22:43  作者: 系统工程师认证参考  阅读次数:27   来源: http://www.d9soft.com

       

  sql server上的加密
 
  sql server上内置了加密用来保护各种类型的敏感数据。在很多时候,这个加密对于你来说是完全透明的;当数据被存储时候被加密,它们被使用的时候就会自动加密。在其他的情况下,你可以选择数据是否要被加密。sql server可以加密下列这些组件:

  ·密码

  ·存储过程,视图,触发器,用户自定义函数,默认值,和规则。

  ·在服务器和用户之间传输的数据

  密码加密

  sql server自动将你分配给登陆和应用角色的密码加密。尽管当你可以从主数据库中直接察看系统表格而不需要密码。你不能给对这种情况作出任何修改,事实上,你根本不能破坏它。

  定义加密

  在有些时候,如果对对象进行加密是防止将一些信息分享给他人。例如,一个存储进程可能包含所有者的商业信息,但是这个信息不能和让其他的人看到,即使他们公开的系统表格并可以看到对象的定义。这就是为什么sql server允许你在创建一个对象的时候进行加密。为了加密一个存储进程,使用下面形式的creat procedure 语句:

create procedure procedurename [;number]
[@parameter datatype
[varying][ = defaultvalue][output]]
[, …]
[with recompile encryption recompile, encryption]
 

  我们关心的仅仅是可选的with参数。你可以详细说明arecompile或者encryption,或者你可以同时说明它们。encryption关键字保护sql server它不被公开在进程中。结果,如果encryption在激活的时候系统存储进程sp_helptext就会被忽视,这个存储进程将被存储在用户创建进程的文本中。如果你不想要加密,你可以使用alter procedure,忽略with encryption子句来重新创建一个进程。

  为了能够使用加密。用户和服务器都应该使用tcp/ip networklibraries用来连接。运行适当的network utility和 检查 force protocol encryption,看下表,用户和服务器之间的连接将不会被加密。

  加密也不能完全自由。当连接确定后,要继续其他的构造,并且用户和服务器必须运行代码来解释加密和解释的包裹。这里将需要一些开销并且当在编译码的时候会使进程慢下来。如果 网络 包裹在你控制范围之外,使用这种做法是非常好的。

  加密中缺少什么?

  你可以注意到在这个列表中缺少一些被加密的东西:你表格中的数据。在你存储数据之前,sql server不会提供任何内置的工具来加密你的数据。

  如果你需要保护存储在sql server上的数据,我们给你两条建议:

  第一,你可以利用grant 和deny关键字来控制你想哪个用户可以在sql server中读取的数据。

  第二.如果你真的想对数据加密,不要设法加密码。你可以利用被测试过的商业产品的算法。

  sql 注入攻击

  sql 注入攻击是一个常规性的攻击,它可以允许一些不法用户检索你的数据,改变服务器的设置,或者在你不小心的时候黑掉你的服务器。sql 注入攻击不是sql server问题,而是不适当的程序。如果你想要运行这些程序的话,你必须明白这冒着一定的风险。

  测点定位弱点

      sql 注入的脆弱点发生在程序开发员构造一个where 子句伴随着用户的输入的时候。比如,一个简单的asp程序允许用户输入一个顾客的id然后检索公司的全部人员的名字,如果顾客id如果作为asp页面的请求串的一部分返回,那么开发员可以编写下面的代码获得数据:

strconn = "provider=sqloledb;data source=(local);" & _
 "database=northwind;integrated security=sspi"
set cnn = server.createobject("adodb.connection")
cnn.open  strconn
strquery = "select contactname from customers " & _
 “where customerid = '" & request.form("custid") & "'"
set rstresults = cnn.execute(strquery)
response.write(rstresults.fields("contactname").value)
 
  现在你知道什么地方有问题了吧?如果用户知道一个用户的id,他可以通过检索来获得全部的相应的名字。现在明白了?

  获得额外的数据

  当然,对于一个攻击程序,尽管它不知道任何顾客的id,甚至不用去猜,它也可以获得数据。为了完成这个工作,它将下面的文本输入到应用程序调用顾客id的textbox中:

customer id:
'union all select contactname from customers
 where customerid <>'
 
  如果你输入了这个代码,你将会看到返回一个询问语句:

select contactname from customers
 where customerid = ''
union all select contactname from customers
 where customerid <>''

  通过获得空和非空顾客的id并集,这个查询语句会返回数据库中所有的相关姓名。事实上,这个union技术可以被用来获得你数据库中大多数信息,看看这个customerid的值:

'union all select firstname + ' ' + lastname from
 employees where lastname <>'

  它将sql语句变成:

select contactname from customers
 where customerid = ''
union all select firstname + ' ' + lastname from
 employees where lastname <>''
 
  看,那就是攻击程序从你的数据库获得的第一个雇员的名字。

  更多的攻击程序

  如果sql注入仅仅只有数据暴光这个弱点就已经够糟糕的了,但是,实际上一个良好的攻击程序可以通过这个弱点获取你数据库中所有的资料。看下面这个例子:

';drop table customers;--

  sql语句变成:

select contactname from customers
      where customerid = ''
     ; drop table customers;-- '

  这个分号使语句和sql server隔离,所以,这里实际上是两个语句。第一个语句不存在的名字,第二个则撤消的整个customers表。两个—sql server注释符,它可以使子句不发生语法错误。

  使用这个技术的变异,一个攻击程序可以在任何sql语句或者存储过程上运行。通过使用xp_cmdshell扩展存储过程,一个攻击程序同样可以在操作系统命令下运行,显然,这是一个严重的漏洞。

  保护自己的数据库

  现在,你知道如何防范sql注入攻击了吗?首先,你不能在用户输入中构造where子句,你应该利用参数来使用存储进程。在最初的asp页面下,重新写的部分将和刚才我们在表中所看到的东西相似。即使你认为在你的应用程序中没有脆弱点,你应该遵守最小特权原则。使用我们建议的其他 安全 技术允许你的用户仅仅访问他们能够访问的。在你没有发现你数据库脆弱点的时候,只有这样,不会使你的数据库崩溃。

  最后的建议

  这就是全部的sql server安全系列。也许你现在不是一个全面的专家,但是你已经了解了很多反面。下一步就是你要保护你sql server数据,记住你在这里所学到的知识,并利用到你的数据库中保证你的数据不被那些黑客攻击。

 

上下文章:

 

上一篇文章: SQLServer应用程序中的高级SQL注入 下一篇文章: 【软考】影响SQL server性能的设计关键

相关文章:

  • 针对微软Server安全漏洞 蠕虫病毒开始流行
  • Windows Server 2008 R2发布
  • 腾讯QQ引入IP加密策略
  • 超级助理Uta加密版——真正的加密
  • “不可破解”的量子加密技术出现

相关软件:

  • 终极程序加密器 3.25
  • 文件夹加密王[FeKing] v1.21
  • FileZilla Server V0.9.28
  • 超级加密 3000 V11.36
  • Http File Server 2.3 Build 209 Beta
  • 压缩加密安装宝 2009 2.7B9.29

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

认证考试分类导航

  • 微软认证
  • 计算机等级考试
  • 软件水平考试
  • 思科认证
  • Oracle认证
  • Linux认证
  • JAVA认证
  • 网络工程师
  • 系统工程师
  • 程序员

本类经典文章推荐

  • SQLServer的安全检查
  • 系统设计师资格与水平考纲 (原高级...
  • 系统分析员备考之ISO9000系列基础...
  • 开发数据库的WEB查询
  • 在builder中向Excel传递数据
  • 用Powerbuilder开发WEB数据库
  • PowerBuilder制作IE风格的图标按钮
  • PowerBuilder编程技巧四则
  • 小议数据库主键选取策略
  • 跨数据库文献检索统一平台的实现

系统工程师阅读排行

  • 数据库原理各章节简答题总结
  • 利用C++Builder6.0开发简单的车辆...
  • 数据库系统工程师下午试卷
  • 跨数据库文献检索统一平台的实现
  • 项目进度的黑洞——已完成90%
  • 用Powerbuilder开发WEB数据库
  • 系统设计师资格与水平考纲 (原高级...
  • 小议数据库主键选取策略
  • 系统分析员备考之ISO9000系列基础...
  • 数据库系统工程师全真预测试卷(一...

认证考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • MCSD简介
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试上机考试应试技...
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试一级模拟试题06

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有