Web 应用程序向设计人员和开发人员提出了许多挑战。HTTP 是无国界的,这意味着跟踪每位用户的会话状态将成为应用程序的责任。作为先导者,应用程序必须能够通过某种形式的身份验证来识别用户。由于所有后续授权决策都要基于用户的标识,因此,身份验证过程必须是安全的,同样必须很好地保护用于跟踪已验证用户的会话处理机制。设计安全的身份验证和会话管理机制仅仅是 Web 应用程序设计人员和开发人员所面临的众多问题中的两个方面。由于输入和输出数据要在公共网络上进行传输,因此还会存在其他挑战。防止参数操作和敏感数据泄漏是另外一些重要问题。
图 4.1 列出了安全设计方法中必须解决的其他重要问题。
图 4.1
Web 应用程序设计问题
本模块中的设计指南是根据应用程序漏洞类别进行组织的。实际经验表明,如果这些领域的设计存在薄弱环节,将会导致安全漏洞。表 4.1 列出了漏洞的类别,每个类别都突出显示了由于设计不当可能会导致的潜在问题。
表 4.1:由于设计不当导致的 Web 应用程序漏洞及潜在问题
漏洞类别 | 由于设计不当而引起的潜在问题 |
输入验证 | 嵌入到查询字符串、表单字段、cookie 和 HTTP 头中的恶意字符串的攻击。这些攻击包括命令执行、跨站点脚本(XSS)、SQL 注入和缓冲区溢出攻击。 |
身份验证 | 标识欺骗、密码破解、特权提升和未经授权的访问。 |
授权 | 访问保密数据或受限数据、篡改数据以及执行未经授权的操作。 |
配置管理 | 对管理界面进行未经授权的访问、具有更新配置数据的能力以及对用户帐户和帐户配置文件进行未经授权的访问。 |
敏感数据 | 泄露保密信息以及篡改数据。 |
会话管理 | 捕捉会话标识符,从而导致会话劫持及标识欺骗。 |
加密 | 访问保密数据或帐户凭据,或二者均能访问。 |
参数操作 | 路径遍历攻击、命令执行以及绕过访问控制机制,从而导致信息泄漏、特权提升和拒绝服务。 |
异常管理 | 拒绝服务和敏感的系统级详细信息的泄漏。 |
审核和记录 | 不能发现入侵迹象、不能验证用户操作,以及在诊断问题时出现困难。 |