文章目录
- 核心防御机制
- 2.3处理攻击者
- 2.3.1 处理错误
- 2.3.2 维护审计日志
- 2.3.3 向管理员发出警报
- 2.3.4 应对攻击
- 2.4 管理应用程序
核心防御机制
2.3处理攻击者
任何设计安全应用程序的开发人员必须基于这样一个假设:应用程序将成为蓄意破坏且经验丰富的攻击者的直接攻击目标。能够以受控的方式处理并应对这些攻击,是应用程序安全机制的一项主要功能。为处理攻击者而采取的措施一般由以下任务组成:
- 处理错误
- 维护审计日志
- 向管理员发出警报
- 应对攻击
2.3.1 处理错误
应用程序的一个关键防御机制是合理地处理无法预料的错误,要么纠正这些错误,要么向用户发送适当的错误信息。在生产环境下,应用程序不应在其响应中返回任何系统生成的消息或其他调试信息。过于详细的错误消息有利于恶意用户向应用程序发动进一步攻击。
大多数web开发语言通过try-catch块和受查异常提供良好的错误处理支持。应用程序代码应广泛使用这些方法查明特殊错误和常规错误,并作出相应处理。下图显示了一个由无法处理的错误生成的过于详细的错误信息。
2.3.2 维护审计日志
审计日志(audit log)能够帮助应用程序持有者了解实际发生的情况,如哪些漏洞被加以利用等信息。在任何注重安全的应用程序中,日志应记录所有重要事件。一般这些事件应至少包括以下事件:
- 所有与身份验证功能有关的事件,如成功或失败的登录、密码修改;
- 关键交易,如信用支付与转账;
- 被访问控制机制阻止的访问企图;
- 任何包含已知攻击字符串,公然表明恶意意图的请求。
有效的审计日志功能一般会记录每个事件的发生时间、发出请求的IP地址和用户的账号。一种有效保护审计日志的方法是将审计日志保存在仅接受主应用程序发出的更新消息的自治系统中。下图显示审计日志会显示很多敏感信息:
2.3.3 向管理员发出警报
警报监控的反常事件一般包括以下几种:
- 应用反常,如收到由一个单独IP地址或用户发出的大量请求,表明应用程序正在受到自定义攻击;
- 交易反常,如单独一个银行账户所转入或转出的资金数量异常;
- 包含已知攻击字符串的请求;
- 请求中普通用户无法查看的数据被修改。
2.3.4 应对攻击
除向管理员发出警报外,许多安全性至关重要的应用程序会含有内置机制,以防御潜在恶意用户。由于应用程序各不相同,现实世界中的许多攻击要求攻击者系统性探查应用程序中存在的漏洞,提交无数专门设计的输入请求,以确定其中是否包含常见的漏洞。
鉴于此,一些应用程序采取自动反应措施阻止攻击者进行这种形式的探查,如对攻击者提交的请求的响应速度变得越来越慢,或终止攻击者的会话等。
2.4 管理应用程序
许多应用程序一般通过相同的web界面在内部执行管理功能,这也是它的核心非安全功能,如下图所示。
它吸引攻击者的地方在于它能够提升权限,以下举例说明:
- 身份验证机制中存在的薄弱环节使攻击者能够获取管理员权限,迅速攻破整个系统;
- 许多应用程序并不对它的一些管理功能执行有效的访问控制。利用这个漏洞,攻击者可以建立一个拥有强大特权的新用户账户;
- 管理功能通常能够显示普通用户提交的数据,管理界面中存在的任何跨站点脚本缺陷都可能危及用户会话的安全;
- 因为管理用户被视为可信用户,或者由于渗透测试人员只能访问低权限的账户,所以管理功能往往没有经过严格的安全测试。
处理用户访问和用户输入的机制是最重要的机制。