从测试的角度,对于输入筛选器,我们需要检查如下几个方面。
第一,开发人员是否正确地实现了该功能?如果开发人员从一开始对于非法输入和合法输入的区分就是错误的,可以预见导致的结果就是该部分会有很严重的缺陷。比如,如果不小心把一个非法输入值归类于合法输入的范围,就会导致该非法值突破软件的唯一保护层(假设软件没有做进一步的检查)。如果测试人员怀疑发生了这种情况,就应该上报该问题,以便及时修复此缺陷 。与此相对的,如果把一个合法输入值归于非法的范围,也是非常严重的问题。这可能会导致软件拒绝服务(denial of service)和严重的用户不满,因为他们试图输入的值是完全合法的但软件不接受他们的输入。
第二,是否可以绕过屏蔽器?如果有某种方法可以让输入值进入系统,或者当输入值进入系统后还可以被修改,那么该屏蔽器就没有什么用处,开发人员还必须实现更多的错误检查代码。在发布之前找出此类的缺陷非常重要,因为它们往往会在软件安全性上导致严重的副作用。图3.3显示了一个被修改过的数量值(它是通过编辑Web页面的HTML源代码来实现的),如果后面的代码不进一步检查该数值,就会导致用户的订单显示一个负数值,使用该软件进行交易的卖方就会遭受损失。
图3.3 图中Quantity字段显示为负数,所以绕过输入约束会导致危险的结果
相关链接: