日志里泄露的敏感信息

发布时间:2026-06-28 分类: 安全意识

日志是开发的"眼睛",但也可能泄露秘密

开发时,日志是最常用的调试手段:

  • 打印请求参数
  • 打印用户信息
  • 打印错误详情
  • 打印数据库查询结果

但日志里,可能藏着敏感信息。


日志中常见的敏感信息

1. 用户密码

错误:

[INFO] User login: username=zhangsan, password=123456

正确: 密码不应该出现在日志中。


2. 个人信息

错误:

[INFO] User info: name=张三, idcard=110101199001011234, phone=13800138000

正确: 身份证号、手机号应该脱敏。


3. API 密钥

错误:

[DEBUG] API request: key=sk-abc123def456, url=https://api.example.com

正确: API 密钥不应该出现在日志中。


4. 数据库连接字符串

错误:

[INFO] Database connected: mysql://root:password@192.168.1.100:3306/mydb

正确: 数据库密码不应该出现在日志中。


5. Session Token

错误:

[DEBUG] Session created: token=eyJhbGciOiJIUzI1NiJ9...

正确: Token 不应该完整出现在日志中。


日志泄露的 3 个途径

途径一:日志文件被访问

  • 服务器日志文件可能被未授权访问
  • 日志文件权限设置不当
  • 日志被攻击者获取

途径二:日志被发送到监控系统

  • 日志被发送到 ELK、Splunk 等监控系统
  • 多人可以查看日志
  • 敏感信息被多人看到

途径三:日志被发送到第三方

  • 应用使用第三方日志服务(如 Sentry)
  • 日志被发送到第三方服务器
  • 敏感信息被第三方获取

如何安全地写日志?

1. 不记录敏感信息

原则: 密码、密钥、Token 不出现在日志中。


2. 脱敏处理

脱敏规则:

  • 手机号:138****8000
  • 身份证号:110101****1234
  • 银行卡号:6222****1234
  • 姓名:张*

3. 使用日志脱敏框架

  • Java:Logback 脱敏插件
  • Python:自定义 Formatter
  • Go:logrus 钩子

4. 日志级别控制

  • 生产环境日志级别设为 INFO 或 WARN
  • DEBUG 日志不输出到生产环境
  • 敏感信息只在 DEBUG 级别记录(且不输出到生产)

5. 日志文件权限

  • 日志文件设置适当的权限
  • 只有授权人员可以查看
  • 定期清理旧日志

一句话总结

日志里可能有密码、密钥、个人信息。不记录敏感信息,脱敏后再记录,控制日志级别和文件权限。


标签: 开发安全、日志安全、数据保护、信息安全意识