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

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

软件Web安全测试知多少

发布: 2009-4-23 09:13 | 作者: 不详 | 来源: 测试时代采编 | 查看: 105次 | 进入软件测试论坛讨论

领测软件测试网 1. 数据验证流程:一个好的web系统应该在IE端,server端,DB端都应该进行验证。但有不少程序偷工减料,script验证完了,就不管了;app server对数据长度和类型的验证与db server的不一样,这些都会引发问题。有兴趣的可参看一下script代码,设计一些case,这可是你作为一个高级测试人员的优秀之处哦。我曾修改了页面端的script代码,然后提交了一个form,引发了一个系统的重大漏洞后门

  2. 数据验证类型: 如果web server端提交sql语句时,不对提交的sql语句验证,那么一个黑客就可暗喜了。他可将提交的sql语句分割,后面加一个delete all或drop database的之类语句,能将你的数据库内容删个精光!我这一招还没实验在internet网站上,不知这样的网站有没有,有多少个。反正我负责的那个web系统曾经发现这样的问题。

  3. 网络加密,数据库加密不用说了吧。

  WEB软件最常碰到的BUG为:

  1、SQL INJETION

  2、对文件操作相关的模块的漏洞

  3、COOKIES的欺骗

  4、本地提交的漏洞

  ●SQL INJETION的测试方法

  原理:

  如有一新闻管理系统用文件news.asp再用参数读取数据库里的新闻譬如

  http://www.xxx.com/news.asp?id=1这一类网站程序

  如果直接用

  rs.open "select * from news where id=" &

  cstr(request("id")),conn,1,1

  数据库进行查询的话即上面的URL所读取的文章是这样读取的

  select * from news where id=1

  懂得SQL语言的就知道这条语言的意思是在news读取id为1的文章内容。

  但是在SQL SERVER里select是支持子查询和多句执行的。如果这样提交URL的话

  http://www.xxx.com/news.asp?id=1and 1=(select count(*) from admin

  where left(name,1)=a)

  SQL语句就变成了

  select * news where id=1 and 1=(select count(*)

  from admin where left(name,1)=a)

  意思是admin表里如果存在字段字为name里左边第一个字符是a的就查询news表里id为1的内容,news表里id为1是有内容的,从逻辑上的角度来说就是1&P。只要P为真,表达式就为真,页面会返回一个正确的页面。如果为假页面就会报错或者会提示该id的文章不存在。黑客利用这点就可以慢慢得试用后台管理员的用户和密码。


延伸阅读

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

TAG: web Web WEB 软件


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

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