日志安全:严禁记录的敏感信息清单

以下是一份详细的清单,列出了严禁打印在日志中的敏感信息和个人隐私信息内容,并附带了处理建议。

一、核心原则

绝对禁止原则:任何可以唯一识别个人身份或授予资源访问权限的凭证类信息,都不应出现在日志中。


二、具体分类清单

1. 身份认证与凭证类

这是最敏感的一类,一旦泄露,攻击者可以直接冒充用户。

  • 全部密码:用户密码、管理员密码、系统密码。

  • 完整的认证令牌/密钥:如 JWT、OAuth Token、API Keys、Access Key / Secret Key(如AWS AK/SK)。

  • 会话ID:特别是如果会话机制不够安全,会话ID可被用于"会话劫持"。

  • 生物特征数据:指纹、面部识别模板等(这些本身就不应以明文存储在任何地方,包括日志)。

2. 个人身份信息

这些信息可以直接或间接识别到特定个人。

  • 身份证号码、护照号码、驾驶证号码、社保号码等政府颁发的唯一标识。

  • 完整姓名 (在某些严格场景下,可能需要避免。如必须记录,可考虑仅使用姓或名的首字母,如"张*"或"Z*")。

  • 联系信息:完整的住址、个人电话号码、个人邮箱地址。

  • 生物标识信息:出生日期、出生地、性别(组合起来可精准定位个人)。

3. 金融与支付信息

这是犯罪分子最直接的目标。

  • 银行卡信息:完整的卡号、有效期、CVV2/CVC2码。

  • 银行账户信息:银行账号、开户行详细信息。

  • 个人财产信息:收入、信用分数、交易记录、加密货币私钥。

4. 医疗健康信息

属于高度敏感的个人隐私,受到法律法规(如HIPAA)的严格保护。

  • 病历资料、疾病诊断记录、用药记录、体检结果、基因数据。
5. 技术与网络信息

虽然不直接指向个人,但可能被用于发起进一步攻击。

  • 完整的网络路径信息:在某些内部系统中,避免记录完整的服务器IP、端口、内网拓扑信息。

  • 详细的系统错误信息 :对用户展示的错误信息应友好,但日志中可以记录详细的技术错误。关键在于,日志中的技术错误不应包含上述任何敏感数据。例如,数据库错误不应将带有用户参数的SQL语句完整打印。

6. 其他敏感数据
  • 种族、政治观点、宗教信仰、性取向等法律特别保护的个人信息。

  • 企业敏感信息:未公开的商业计划、源代码、内部通信、商业秘密。

  • 法律相关数据:涉及调查、案号等司法信息。


三、安全的日志记录实践建议

仅仅知道"不能记什么"还不够,更需要知道"应该怎么记"。

  1. 脱敏/掩码处理

    这是最常用的技术。对于调试需要但又敏感的数据,只显示部分字符,用星号(*)或其他符号代替大部分内容。

    • 示例

      • 身份证号:11010519******1234-> 只显示前6位和后4位。

      • 银行卡号:622588******1234

      • 手机号:138****1234

      • 邮箱:z***n@example.com

  2. 使用占位符或引用ID

    当需要关联信息时,不要记录数据本身,而是记录一个无法反推原文的唯一ID。

    • 错误示例用户 张三(身份证:110101199001011234) 登录成功。

    • 正确示例用户 (ID: 12345) 登录成功。会话 (SID: abcde-fghij) 已创建。

    • 真正的用户信息"张三"和身份证号存储在安全的数据库中,通过ID 12345可以关联查询。

  3. 使用集中式的秘密管理工具

    对于API密钥、数据库密码等配置信息,绝对不要写在项目的配置文件或代码里然后被日志记录。应使用如 HashiCorp Vault、AWS Secrets Manager、Azure Key Vault​ 等工具动态获取。

  4. 在代码层面进行约束

    • 代码审查:将日志安全作为代码审查的强制性步骤。

    • 静态代码分析工具(SAST):使用工具(如 SonarQube, Checkmarx)扫描代码,建立规则来检测日志中可能存在的敏感信息模式(如身份证、邮箱的正则表达式)。

    • 预定义日志工具 :编写安全的日志包装函数,自动对特定字段(如password, token)进行脱敏。

  5. 日志级别控制

    确保在生产环境中使用 INFOWARN级别,避免使用 DEBUGTRACE级别,因为后者通常会打印出非常多的细节信息,极易泄露敏感数据。

  6. 访问控制和加密

    • 访问权限:严格限制对生产环境日志文件的访问权限,遵循最小权限原则。

    • 日志加密:对存储的日志文件进行加密,特别是在传输和静态存储时。

总结清单(速查表)

严禁记录 **安全记录方式(示例)**​
密码、API密钥、Token 绝不记录。使用[REDACTED]或直接跳过。
身份证、银行卡号 脱敏,如 110105******1234
完整姓名、地址、电话 脱敏,如 张*138****1234,或使用用户ID
会话ID、数据库连接字符串 记录引用ID或哈希值,而非完整值
详细的错误堆栈(含用户输入) 记录错误类型和位置,但过滤掉用户输入的具体参数

**最后,请将"隐私设计"和"安全第一"的理念融入开发和运维的每个环节。**​ 在记录任何信息到日志前,多问一句:"这有必要吗?这安全吗?"

相关推荐
m***567243 分钟前
在Nginx上配置并开启WebDAV服务的完整指南
java·运维·nginx
摸鱼仙人~44 分钟前
Ubuntu系统安装VMware Tools 完整流程(解压→安装)
linux·运维·ubuntu
我不是8神1 小时前
Docker知识点总结
运维·docker·容器
www32701251 小时前
项目管理系统打通数字化转型全链路(从需求到交付)的实践路径
运维·项目管理·项目管理系统
源梦想1 小时前
飞车狂飙动作冒险网页小游戏Linux部署演示
linux·运维·服务器
YJlio1 小时前
Autologon 学习笔记(9.7):安全自动登录的正确打开方式
笔记·学习·安全
知攻善防实验室1 小时前
Yakit热加载 之 出差无聊测酒店 WiFi
安全·web安全·网络安全·渗透测试
切糕师学AI1 小时前
如何配置 Typora + PicGo 实现图片自动上传 OSS(阿里云)?
运维·阿里云·云计算
为什么要内卷,摆烂不香吗1 小时前
Linux 宝塔面板快速简单创建自己的网站
运维·服务器·nginx·阿里云