软件质量经济学
上QQ阅读APP看书,第一时间看更新

2.6.3 度量安全性

评估安全性至少需要检查下列软件工程实践和技术属性。

●应用程序架构实践

 ■多层设计一致性

 ■好的安全实践(输入验证、SQL注入、跨站脚本[参见CERT组织公布的25大软件编程错误:http://www.sans.org/top25-programming-errors/])

●编程实践(代码级)

 ■错误和异常处理

 ■好的安全实践(系统功能权限,程序访问控制)

计算应用程序源代码与最佳安全编程实践及内部安全准则的一致性级别,会给我们一些关于安全级别的提示,并且能在开发周期中起到早期预警的作用,从而降低补救成本和发布弱点的风险。

安全可以通过评估与架构准则和组织安全准则的一致性来测量,在架构准则中,分层架构中关于交互的准则尤为重要(详见美国国土安全部的"Defense in Depth"一文:https://buildsecurityin.us-cert.gov/bsi/articles/knowledge/principles/347-BSI.html)。举个例子,动态网页所使用的自定义标记(方法调用)可能需要特定的参数和访问框架的安全功能的权限(表示层的验证方法和业务逻辑一侧的专用认证方法)。

没有被正确处理的未捕获的异常会给黑客留下攻破应用程序的机会。例如,如果客户端接收到一个未捕获的运行时异常,该异常在被处理前在调用栈中被抛出了好几层,那么处理代码就有可能暴露某些应当保持隐藏的功能。此外,应该实施调查以避免生成逻辑炸弹。逻辑炸弹通常被定义为一种有意编写或修改以在满足特定条件(软件合法用户或所有者意料之外的和未授权的条件)时破坏信息系统及其内容的程序(参见http://en.wikipedia.org/wiki/Logic_bomb)。