输入验证标准
什么是输入?
输入指的是由环境产生的一种刺激,该刺激导致被测试的应用有所响应。
具体的表现形式有输入框(新增、修改、查询等)、上传、导入等。
输入可能会导致安全隐患,故需要建立整体的威胁模型,测试溢出漏洞、信息泄漏、错误处理、SQL 注入、身份验证和授权错误。
输入验证标准
客户端验证 服务器端验证(禁用脚本调试,禁用Cookies)。
数据验证流程:一个好的web系统应该在IE端,server端,DB端都应该进行验证。但有不少程序偷工减料,scrīpt验证完了,就不管了;app server对数据长度和类型的验证与db server的不一样,这些都会引发问题。
编号 |
输入(表一) |
1 |
输入框的表现形式是否合理,主要分下拉框、单复选框、文本框、弹出选择框。 |
2 |
UI: 输入框的样式,是否对齐,样式是否美观 |
3 |
输入框默认值: 1、 提示信息类 2、 系统数据:应该默认的是否默认了,默认的对不对(数据权限) |
4 |
输入框之前的标题是否正确; |
5 |
数据完整性测试,验证输入与输出的是否信息一致 |
6 |
对特殊字符的处理,尤其是输入信息徐需要发送到数据库的。特殊字符包括:'(中英文单引号)、"(中英文双引号)、[](中括号)、()(小括号)、{}(大括号)、;(分号)、<>(大于小于号)、@、#、%、$ …… |
7 |
空值验证 |
8 |
空格trim处理:字符串前后空格trim,中间的空格不处理 |
9 |
输入框本身的大小、长度; |
10 |
对空格、TAB字符的处理机制; |
11 |
半角、全角处理 |
12 |
字符本身显示的颜色; |
13 |
密码输入窗口转换成星号或其它符号;且密码输入框对其中的信息进行加密,防止采用破解星号的方法破解; |
14 |
按下ctrl和alt键对输入框的影响; |
15 |
对于新增、修改、注册时用的输入框,有限制的,应该输入时作出提示,指出不允许的或者标出允许的; |
16 |
对于有约束条件要求的输入框应当在条件满足时输入框的状态发生相应的改变,比如选了湖南就应该列出湖南下面的市,或者选了某些条件之后,一些输入框会关闭或转为只读状态; |
17 |
输入类型:根据前面的栏位标题判断该输入框应该输入哪些内容算是合理的。例如,是否允许输入数字或字母,不允许输入其他字符等。 |
18 |
输入与要求不同类型的字符,如: 要求输入数字则检查正值,负值,零值(正零,负零),小数,字母,空值; 要求输入字母则检查输入数字 |
19 |
1、输入长度:数据库字段有长度定义,当输入过长时,提交数据是否会出错。 2、对输入框输入超过限制的字符的处理,一般非特殊的没有作出限制的在255byte左右; 3、如对输入文字长度有限制,则尝试超过限制,刚好到达限制字数时有何反应 |
20 |
输入状态:当处于某种状态下,输入框是否处于可写或非可写状态。例如,系统自动给予的编号等栏位作为唯一标识,当再次处于编辑状态下,输入框栏位应处于不可写状态,如果可写对其编辑的话,可能会造成数据重复引起冲突等。 |
21 |
是否允许复制粘贴,右键粘贴和ctrl+V等 |
22 |
关键字是valid,但是没有匹配搜索结果的情况; |
23 |
输入正常字符串 |
24 |
输入特殊字符串NULL, null, 0x0d 0x0a |
25 |
关键字有大小写混合的情况; |
26 |
关键字中是否支持通配符的情况(视功能而定); |
27 |
对于像回答数这样需检验数字正确性的测试点,不仅对比其与问题最终页的回答数,还要对回答进行添加删除等操作后查看变化 |
28 |
原子输入 |
29 |
等价类输入 |
30 |
输入的组合 |
31 |
输入的光标处理,出错后光标处理 |
32 |
输入内容后,输入框的状态变化 |
33 |
输入html和javascript代码, 如【表二】所示。 |
编号 |
输入(表二) |
1 |
输入<html”>”gfhd</html>,看是否出错; |
2 |
输入<input type=”text” name=”user”/>,看是否出现文本框 |
3 |
输入<script type=”text/javascript”>alert(“提示”)</script>看是否出现提示 |
4 |
<input type="text"/> |
4 |
<input/> |
5 |
<input/ |
6 |
<script>alert('hello');</script> |
7 |
1.jpg" onmouseover="alert('xss') |
8 |
"></a><script>alert(‘xss’);</script> |
9 |
http://xxx';alert('xss');var/ a='a |
10 |
‘”>xss&< |
11 |
a=”/” ; b=”;alert(/xss/);//” |
12 |
<img src=“输出内容” border=“0” alt=“logo” /> |
13 |
“’” |
14 |
‘”’ |
15 |
“”” |
16 |
“ “ “ |
17 |
“”“ |
18 |
“‘ ” title=”” |
关于上传:
1.上传文件是否有格式限制,是否可以上传exe文件;
2.上传文件是否有大小限制,上传太大的文件是否导致异常错误,上传0K的文件是否会导致异常错误,上传并不存在的文件是否会导致异常错误;
3.通过修改扩展名的方式是否可以绕过格式限制,是否可以通过压包方式绕过格式限制;
4.是否有上传空间的限制,是否可以超过空间所限制的大小,如将超过空间的大文件拆分上传是否会出现异常错误。
5.上传文件size大于服务器剩余空间大小,是否会出现异常错误。
6.关于上传是否成功的判断。上传过程中,中断。程序是否判断上传是否成功。
7.对于文件名中带有中文字符,特殊字符等的文件上传。
8.用超长路径下的文件
9.上传过程中删除、移动、修改文件
10.上传时更改文件名
11.上传过程中中断
12.上传时间
13.上传后不保存
14.上传地址
15.上传文件名大小写是否区分
16.上传过程中注销帐号
17.上传过程中断网
18.上传过程中开关防火墙
导入
除了验证【表一】中提到的要点,导入还需要进行验证:
1.时间验证(时间的格式、开始和结束时间验证、年月日无效数据验证(注意闰年)
2.导入文件的可支持的格式,如果导入不支持的格式是否报错
3.导入过程中取消导入
4.导入文件的size
5.导入文件的文件名大小写
6.上传后保存的时间(数据库服务器时间)
7.上传后保存到数据库的地址(可配置的地址为佳,固定地址最次)
8.上传过程中注销帐号
9.上传过程中断网
10.上传过程中开关防火墙
下载&导出:
- 文件导出后文件名和内容是否出现乱码,内容格式是否对齐,内容是否正确
- 导出内容的数据权限是否正确,是否导出了超过用户权限的内容
- 是否可选择性/全部导出
- 是否可另存为其他格式(手动更改)
- 保存到超长路径下的目录
- 导出的耗时
- 目标磁盘满载
- 导出过程中注销帐号
- 导出过程中断网
- 导出过程中开关防火墙
关于URL:
1.某些需登录后或特殊用户才能进入的页面,是否可以通过直接输入网址的方式进入;
2.对于带参数的网址,恶意修改其参数,(若为数字,则输入字母,或很大的数字,或输入特殊字符等)后打开网址是否出错,是否可以非法进入某些页面;
3.搜索页面等url中含有关键字的,输入html代码或JavaScript看是否在页面中显示或执行。
4.输入善意字符。