You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Coverity Scan扫描Python项目触发HARDCODED_CREDENTIALS警告如何修复

警告触发根因

Coverity 抛出 HARDCODED_CREDENTIALS 警告的核心原因是你在 os.getenv 调用中填写了硬编码的默认密码 "owner":当系统环境变量 MYPASSWD 未配置时,代码会直接使用这个写死的凭证连接数据库,存在明文泄露、未授权访问的风险。

修复方案
  • 移除硬编码的默认凭证,禁止在代码中写入任何密码、密钥类敏感信息。如果环境变量读取失败直接抛出异常终止流程,不允许降级使用默认凭证:
import os

MY_PASSWORD = os.getenv("MYPASSWD")
if not MY_PASSWORD:
    raise EnvironmentError("必需的环境变量 MYPASSWD 未配置,数据库连接终止")
  • 优化敏感信息存储方式:Linux 中所有进程的环境变量都可以通过 /proc/<pid>/environ 被同权限的其他进程读取,因此不建议把密码直接存到全局环境变量中。可以改用权限受控的专属配置文件存储:
    1. 将密码写入独立的配置文件(例如 ~/.my_service_secrets),设置文件权限为仅所有者可读:执行命令 chmod 600 ~/.my_service_secrets
    2. 程序启动前单独加载该文件,或直接在代码中读取该文件内容获取凭证,避免敏感信息泄露到全局进程环境
  • 额外安全优化:读取到密码后主动删除环境变量中的对应记录,避免被后续启动的子进程继承或者运行时泄露:
MY_PASSWORD = os.getenv("MYPASSWD")
if not MY_PASSWORD:
    raise EnvironmentError("环境变量 MYPASSWD 未配置")
# 读取完成后删除环境变量中的敏感信息
del os.environ["MYPASSWD"]

mysql_conn = pymysql.connect(password=MY_PASSWORD,...)

内容的提问来源于stack exchange,提问作者Hoa Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:54:04