2.6.2 供应商更加关注
用户期望供应商提供易用且没有错误的软件。当发现bug后,他们希望供应商立即发布修复措施。这确实是一把双刃剑。但是,供应商经常采取的“渗透并修补”的做法招致了安全社区的指责,因为供应商仅仅是发布多个临时性的修复措施来安抚用户,从而避免自己的声誉受损。安全专家称,这种临时方法不是一种良好的工程实践。大多数安全缺陷发生在应用程序设计过程的早期。应用程序的优劣可以通过6个关键的因素区分:
身份验证和授权 最好的应用程序应能保证身份验证和授权步骤是完善的,并且不能被绕开。
不信任用户输入 应该将用户当做“敌方代理”,在服务器端验证数据,并通过去掉字符串的标记来防止缓冲区溢出。
端到端会话加密 应该加密整个会话,而不是只加密活动中包含敏感信息的部分。另外,安全的应用程序的超时时限应该较短,如果用户有一段时间不活动,那么在再次使用应用程序时需要重新进行身份验证。
安全的数据处理 安全的应用程序还将保证系统处于不活动状态时数据是安全的。例如,口令存储在数据库中时仍然应该是加密的,而且应该实现安全的数据隔离机制。不恰当地实现加密组件常常为敏感数据的未授权访问提供了很多机会。消除不当配置、后门和默认设置 许多软件供应商的一种常见但不安全的做法是销售带有后门、实用工具和管理功能的软件,以帮助接收信息的管理员了解和使用该产品,问题在于,这类增强通常会包含严重的安全缺陷。因此应该总是禁用这些选项,用户可以在需要时再启用它们,并且所有的后门都应该从源代码中恰当地清除。
安全质量保证 设计产品时,无论是在规范制定和开发阶段,还是在测试阶段,安全性都应该是一个核心的关注点。因此,供应商应该组建安全质量保证团队(security quality assurance team,SQA)来管理所有与安全相关的问题。
2.7 接下来应该处理的事项
我们可以通过完成一些活动来改进当前的安全状况,但是该过程中涉及的每个人都应该更具有前瞻性、接受过良好的培训并具有更大的动力。如果确实想让自己的环境更加安全,那么就应该遵循下面列出的一些惯例:
积极行动 确保环境安全不只是开发人员的责任,同时也是用户的责任,用户应该积极查阅有关安全功能的文档,并向供应商索取测试结果。许多安全问题就是因为用户配置不当造成的。
培训应用程序开发人员 经过良好培训的开发人员可以创建更安全的产品。供应商应该在安全领域认真地培训他们的雇员。
……
展开
——Corelan Team创始人Peter Van Eeckhoutte(corelanc0d3r)