第二章、核心防御机制(二)
书接上文,处理完用户的访问与输入,下面来处理攻击者,管理应用程序。
2.3、处理攻击者
常言道:居安思危,思则有备,有备无患
在进行防御时,开发人员必须假设自己开发的应用程序一定会遭到攻击,并且会被攻破。所以需要一系列的防御与攻击措施尽可能阻止攻击者。
以下是处理攻击者采取的措施:
- 处理错误
- 维护审计日志
- 向管理员发出警报
- 应对攻击
处理错误
用户无意的输入错误、攻击者的攻击输入都会导致错误产生,这些是开发人员预料不到的情况。web应用程序要么纠正这些错误,要么向用户反悔错误信息。
==应用程序不应返回任何系统生成的消息或者其他调试消息==
因为有些情况下,攻击者会利用返回的错误消息中的敏感信息进行攻击。
多数web开发语言使用try-catch块(也就异常处理) 提供错误处理支持,此外通过配置服务器以自定义方式处理错误。后面会具体讲解错误消息的处理。
返回网页的错误代码详细参考:https://blog.csdn.net/admin_8888/article/details/75270112
维护审计日志
审计日志是用来记录所有重要的事件,这些记录下来的信息会对web程序所有者了解实际情况有所帮助。
重要事件包括:
- 任何身份验证有关的事件(登录成功或失败,密码修改)
- 关键交易(信用卡转账)
- 被访问控制阻止的事件(访问权限拒绝)
- 包含攻击字符串的恶意请求
记录的事件包含事件发生时间,发出请求的ip地址,会话令牌,和用户账户(已通过验证)。
日志必须受到严格保护,否则这些敏感信息泄露会造成严重后果。
老图了,像这种属实不安全
向管理员发出警报
警报的设置必须合理,过多警报会导致管理员忽略攻击。过少又会给攻击者可乘之机。
现在有专门的应用程序防火墙与入侵检测程序来管理发出警报。但是由于每个程序不同又有一定限制。
应对攻击
当发现攻击时,web应用程序应当采取自动化的反应措施来阻止攻击者的探查。例如对攻击者提交的响应速度越来越慢。
2.4、管理应用程序
一般web应用程序在web界面管理应用程序(就是==后台==)。这种管理机制容易吸引攻击者,因为它能提升权限。
管理用户往往被视为信任用户,所以管理功能没有经过严格的安全测试,而且需要执行相当危险的安全操作。如果被攻破,整个服务器都将沦陷。