• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试开发技术SQL Server应用程序中的高级SQL注入

发布: 2009-10-14 09:55 | 作者: 不详 | 来源: 领测软件测试网采编 | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网

  从安全角度看合并第二种方法和第三种方法可能是最好的方法——只允许正确的输入,然后搜索输入中已知的错误数据。

  带有连接符号的姓名的问题对于体现合并两种方法的必要性是一个好的例子:

  Quentin Bassington-Bassington

  我们必须在正确输入中允许连接符号,但是我们也意识到字符序列'—'对SQL SERVER很重要。

  当合并修改数据和字符序列确认时,会出现另一个问题。例如,如果我们应用一个错误过滤在除去单引号之后去探测'—','select'和'union',攻击者可以输入:

  uni'on sel'ect @@version-'-

  既然单引号被除去,攻击者可以简单地散布单引号在自己的错误的字符串中躲避被发现。

  这有一些确认代码的例子:

  方法一:过滤单引号

  function escape(input)

  input=replace(input,"'","''")

  escape=input

  end function

  方法二:拒绝已知的错误输入

  function validate_string(input)

  known_bad=array("select","insert","update","delete","drop","—","'")

  validate_string=true

  for i=lbound(known_bad) to ubound(known_bad)

  if(instr(1,input,known_bad(i),vbtextcompare)<>0) then

  validate_string=false

  exit function

  end if

  next

  end function

  方法三:只允许正确的输入

  function validatepassword(input)

  good_password_chars=” abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”

  validatepassword=true

  for i=1 to len(input)

  c=mid(input,I,1)

  if(InStr(good_password_chars,c)=0) then

  validatepassword=false

  exit function

  end if

  next

  end function

  [SQL SERVER锁定]

  在这指出的重要一点是锁定SQL SERVER是必要的;外面的是不安全的。这是一个但创建SQL SERVER时需要做的事情的简短的列表:

  1.确定连接服务器的方法

  a.确定你所使用的网络库是可用的,那么使用"Network Utility"

  2.确定哪些帐户是存在的

  a.为应用程序的使用创建一个低权限的帐户

  b.删除不必要的帐户

  c.确定所有帐户有强壮的密码;执行密码审计

  3.确定哪些对象存在

  a.许多扩展存储过程能被安全地移除。如果这样做了,应该移除包含在扩展存储过程代码中的'.dll'文件

  b.移除所有示例数据库——例如'northwind'和'pubs'数据库

  4.确定哪写帐户能过使用哪些对象

  a.应用程序进入数据库所使用的帐户应该有保证能够使用它需要的对象的最小权限

  5.确定服务器的补丁

  a.针对SQL SERVER有一些缓冲区溢出和格式化字符串攻击,也有一些其他的安全补丁发布。应该存在很多。

  6.确定什么应该被日志记录,什么应该在日志中结束。

  [参考文献]

  [1] Web Application Disassembly with ODBC Error Messages, David Litchfield

  http://www.nextgenss.com/papers/webappdis.doc

  [2] SQL Server Security Checklist

  http://www.sqlsecurity.com/checklist.asp

  [3] SQL Server 2000 Extended Stored Procedure Vulnerability

  http://www.atstake.com/research/advisories/2000/a120100-2.txt

  [4] Microsoft SQL Server Extended Stored Procedure Vulnerability

  http://www.atstake.com/research/advisories/2000/a120100-1.txt

  [5] Multiple Buffer Format String Vulnerabilities In SQL Server

  http://www.microsoft.com/technet/security/bulletin/MS01-060.asp
  http://www.atstake.com/research/advisories/2001/a122001-1.txt

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网