真正安全的隐藏是阻断泄露路径:.env进Git、硬编码在launch.json的env字段、调试面板明文显示DB_PASSWORD三处必须严防;仅配files.exclude仅为视觉隐藏,零安全防护,必须同步配置.gitignore、禁用launch.json的env字段、关闭debug.showVariables。

真正安全的隐藏,不是让文件“看不见”,而是让它“不该出现的地方不出现”——.env 文件进 git、硬编码在 launch.json 的 env 字段、调试面板里明文显示 DB_PASSWORD,这三处才是真实泄露点。
为什么只配 files.exclude 不能算安全
files.exclude 只是视觉过滤,对安全零防护。它不影响 Git 提交、不影响终端读取、更不影响调试器注入变量。很多开发者以为“.env 不显示=安全了”,结果一提交就全暴露。
- 它不阻止
git add .把.env偷偷带上 - 它不阻止别人用
cat .env在终端直接看到密钥 - 它不阻止 VSCode 调试器把
os.environ全部列在“变量”面板里
必须同步配置 .gitignore 和 files.exclude
二者职责不同,缺一不可:前者防误提交,后者防误点开。只做一半等于白做。
-
.gitignore中必须包含:.env、.env.local、id_rsa、*.pem -
.vscode/settings.json中配files.exclude:"**/.env": true、"**/id_rsa": true - 注意:
**/.env匹配所有子目录下的.env,但根目录的.env更推荐显式写".env": true,避免匹配失效
launch.json 里禁用 env 字段才是关键
VSCode 调试器默认会把 launch.json 中 env 对象里的所有键值对原样注入进程环境。一旦写进 "DB_PASSWORD": "xxx",密钥就固化在配置里了。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- ✅ 正确做法:整个
env字段删掉,或留空对象"env": {} - ✅ 环境变量改由
python-dotenv(Python)或系统级export(Shell)加载,VSCode 只继承,不声明 - ⚠️ 即使用了
.env文件,也要确保入口代码第一行执行load_dotenv(),否则调试器启动时变量还没加载
关闭 debug.showVariables 防止变量面板泄露
即使变量来自外部,VSCode 默认仍会在调试侧边栏的“变量”面板中展开 os.environ,包括所有敏感字段。这不是 bug,是默认行为。
- 设置
"debug.showVariables": "never"(全局用户设置),或设为"onFirstLoad"减少暴露窗口 - 临时需要查看?快捷键
Ctrl+Shift+P→ 输入Debug: Toggle Variables View手动开关 - 该设置影响所有语言调试器,不是 Python 专属;如果团队混用多种语言,需统一评估是否适用
最容易被忽略的其实是顺序:先确保 .gitignore 生效,再删 launch.json 的 env,然后才配 files.exclude 和 debug.showVariables。漏掉任意一环,前面的功夫都可能白费。










