一、背景
团队最近频繁遭受网络攻击,引起了技术负责人的重视,笔者在团队中相对来说更懂安全,因此花了点时间编辑了一份安全开发自检清单,觉得应该也有不少读者有需要,所以将其分享出来。
二、数据安全
2.1 敏感信息
说明 | 检查项 |
敏感信息传输 | 敏感信息传输时,禁止在GET请求参数中包含敏感信息,如用户名、密码、卡号等。建议为所有敏感信息采用TSL加密传输。 |
客户端保存 | 客户端保存敏感信息时,禁止其表单中的自动填充功能、以明文形式保存敏感信息 |
服务端保存 | 服务端保存敏感信息时,禁止在程序中硬编码敏感信息,明文存储用户密码、身份证号、银行卡号、持卡人姓名等敏感信息,临时写入内存或文件中的敏感数据,应及时清除和释放 |
敏感信息维护 | 敏感信息维护时,禁止将源码或SQL库上传到开源平台或社区,如 Github、开源中国等。 |
敏感信息展示 | 敏感信息展示时,如果是展示在web页面上,应在后端服务器上进行敏感字段的脱敏处理。 |
2.2 日志规范
说明 | 检查项 |
记录原则 | 确保日志记录包含了重要的应用事件,但禁止保存敏感信息,如会话标识,账户密码、证件等 |
事件类型 | 记录所有的身份验证、访问操作、数据变更、关键操作、管理功能、登出记录等事件。 |
事件要求 | 日志一般会记录每个事件的发生时间、发出请求的IP地址和用户账户(如果已通过验证)。 |
日志保护 | 日志受到严格保护,避免未授权的读取或写入访问。 |
2.3 异常处理
说明 | 检查项 |
容错机制 | 在应用实现时应包含完整的功能异常捕获机制如try-catch块,典型位置:文件、网络、数据库、命令操作等。一旦出现异常,应该在日志中完整记录异常的发生时间、代码位置、报错详情、触发错误的可能用户等,重要系统的严重异常应该有报警的机制,及时通知系统运营者及时排查并修复题 |
自定义错误信息 | 在生产环境下,应用程序不应在其响应中返回任何系统生成的消息或其他调试信息,配置应用服务器使其以自定义的方式处理无法处理的应用程序错误,返回自定义错误信息 |
隐藏用户信息 | 禁止在系统异常时泄露用户的隐私信息,典型的有:身份信息、个人住址、电话号码、银行账号、通讯记录、定位信息等 |
隐藏系统信息 | 禁止在系统异常时泄露系统的敏感信息(用户账户和密码、系统开发密钥、系统源代码、应用架构、系统账户和密码、网络拓扑等)。 |
异常状态恢复 | 方法发生异常时要恢复到之前的对象状态,如业务操作失败时的回滚操作等,对象修改失败时要恢复对象原来的状态,维持对象状态的一致性 |