首先,改变安全测试的视角。我认为,如果我们想做好安全测试,我们必须首先改变查看软件的视角,无论是有完整的堆栈工作经验还是只有一部分技术专长。例如,让我们看一下同一幅画。许多人第一眼看到两张脸,但是许多人看到一个大花瓶。这是由不同的视角造成的。当我第一次接触安全测试时,我深深地感受到了这一点。当时,我还在测试一个网络应用程序的帐户登录功能。当我们尝试通过键入不正确的登录名登录时,计算机浏览器上的消息是“此登录名将不可用”。当我们尝试正确的登录名和不正确的登录密码时,消息提示会变成“不正确的登录密码。”我对这个明显的错误提示非常满意。想象一下,如果我是一个真正的终端产品,这个信息内容会帮助我缩小纠错范围,提高工作效率,这是非常好的。然而,蹲在我旁边的安全测试工程师立即跳了出来:“这个消息表明,它必须改变!敏感信息内容暴露了!”看到我一脸茫然,安全测试工程师告诉我,根据我们的信息,系统软件的有意用户可以推断出系统软件中已经存在什么登录名,然后用这个登录名对登录密码进行暴力破解,从而缩小了解密的范围。因此,该信息内容不仅为合理合法的用户提供了方便,也为系统软件的恶意用户提供了方便。通常,这种便利对系统软件的有意用户的好处远远高于对合理合法用户的好处。这次亲身经历不仅让我震惊,也让我意识到很多安全系统的漏洞以前就已经摆在我的眼前,但是我没有看到它们,因为我想得太多了。事实上,在我们亲身经历的不同新项目中,当我们改变视角时,我不需要寻找一些安全系统漏洞,而只需要进入我的视野。这一切都很容易得到。其次,改变测试中的模拟目标,这样我们可以从不同的角度观察软件。我们必须改变我们模拟的模拟目标。这也是我们一起练习换角度的合理方式。当我们进行非安全测试时,我们通常认为自己是一个合理合法的客户,然后我们才开始验证系统软件是否能够达到预设的总体目标。例如,对于一个网上商城系统,我们将认证系统软件是否允许客户访问和购买产品,我们还将测试一些异常的个人行为,比如购买的产品总数是否不是一个大数字,而是一串没有意义的英文字母,看看系统软件能否给出一个优雅的回答。我们测试的目的通常是