HTML注释不能隐藏敏感信息,因其会随HTML文件完整下载到客户端,用户可通过“查看页面源代码”直接看到;真正保护需服务端剥离或构建时清除。
直接说结论:HTML 注释本身不隐藏敏感信息,index.html 里任何写在 <!-- --> 里的内容,都会被用户右键“查看页面源代码”完整看到——这根本不是隐藏,只是“不渲染”。真要隐藏,必须从服务端剥离,或用构建时处理。
浏览器加载 index.html 时,会把整个文件(含注释)原样下载到客户端。只要打开开发者工具或源码视图,所有 <!-- API_KEY=xxx -->、<!-- TODO: 迁移测试数据库 --> 全部暴露。
index.html 没这能力真正敏感的信息(如密钥、内部路径、未上线功能开关)不该出现在最终 HTML 中。可行路径只有两条:
sed、replace-in-file、Vite 插件 vite-plugin-html)在打包前删除特定注释块,例如匹配 <!-- SECRET:.*?--> 并替换为空grep -v "SECRET" index.html > clean.html(注意备份和编码问题)注释适合记录开发上下文,但得避开危险模式:
立即学习“前端免费学习笔记(深入)”;
<!-- @TODO Refactor login flow after auth v2 rollout -->(纯流程提示)<!-- DEV_ONLY: show debug panel --> + 配合 JS 判断 location.hostname === 'localhost' 控制显示<!-- DB_PASSWORD=dev123 -->、<!-- INTERNAL_API=https://admin.internal/api -->
别靠“我觉得没写错”,直接看真实产物:
npx serve -s dist(假设构建输出在 dist)Ctrl+U(Windows/Linux)或 Cmd+Option+U(macOS)打开源码页Ctrl+F 搜索 SECRET、KEY、PASS、INTERNAL、TODO —— 任何命中都意味着风险最常被忽略的是:开发时删了代码,但忘了删旁边那行注释;或者 Git 提交了带注释的临时分支,CI 自动构建上线了它。