► 安全需求是必须完成的任务。例如,所有密码必须加密存储。安全需求通常不会指示如何做,例如指示用哪个软件用来加密。
► 安全特性是必须可用的功能。例如,用户管理必须能够在Web 界面进行。
与功能要求或性能要求类似,安全需求需要确保从一开始就将安全性构建到应用中。安全需求定义要求何种新安全特性和如何改变现有特性以包括必要的安全属性。设定安全需求的目标是确保应用可以预防和抵挡攻击。
审计和日志记录
尽管人们通常依赖网络和包日志来进行取证分析,同时,应用程序内部的日志记录也是同等重
要的;应用程序应该对软件的保密性、可用性和完整性至关重要的事件进行内部日志记录。
例如,应用就需要有审计日志。审计日志来记录日志的事件必须包括当前会话令牌(如果
有)、IP 地址和时间。必须记录日志的事件还包括帐户验证尝试、帐户锁定、应用错误和与
规定的验证例程不匹配的输入值。
身份验证
由于大多数应用具备访问控制限制,以防止机密性泄漏,因此,确保这些访问控制机制不能被
破解或操作以允许未经授权的访问,这一点非常重要。
例如,要求强密码。任何身份验证凭证必须包含适当的强度,其中包括大写字母、小写字母和
数字字符,而且在长度上不能小于8 个字符。
会话管理
HTTP 协议最初的设计使得难以在整个应用会话持续期间跟踪会话。这推动了 HTTP 协议之
上的会话管理功能的构建。
例如,一个安全需求是合法用户自始至终可以保持正常访问;远程会话的所有资源利用必须加
以监控和限制,以防止或减轻对应用可用性的攻击。
输入验证和输出编码
尽管在建模和架构阶段大多数设计级安全性缺陷都被发现,但大多数开发和交付安全性问题是
因为不良的输入验证和输出编码而引入的。重要的是用户提供的数据要通过适当的验证。
例如,所有输入必须通过集中的验证控制来加以验证。
异常处理
从严格意义上讲,一个应用不可能完全安全。但是,常常最可接受的是应用“足够安