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

Nuxt 3应用.env文件暴露问题排查:生产环境敏感数据可访问

Nuxt 3 .env 文件暴露及 runtimeConfig 配置错误分析

一、.env 文件可被直接访问的根本原因

你的核心问题不是 runtimeConfig 配置,而是.env 文件被当作静态资源对外暴露了,主要有两个可能:

  • .env 文件放错位置:如果把.env 放在了项目的public目录下,Nuxt 会将该目录下的所有文件作为静态资源对外提供访问,自然能通过域名直接打开。必须把.env 移到项目根目录。
  • 服务器配置问题:如果用 Nginx/Apache 部署,检查服务器配置是否允许直接访问根目录下的.env 文件。比如 Nginx 可添加规则禁止访问:
    location ~ /\.env {
        deny all;
        return 404;
    }
    

二、你的 runtimeConfig 配置错误

你的配置存在两个明显问题:

  1. 没有正确读取环境变量:你写死了api_key: example,应该改为读取.env 里的变量,示例:
    runtimeConfig: {
      // 服务器端专用密钥,不会暴露给客户端
      apiSecret: {
        api_key: process.env.API_KEY,
        stripe_pk: process.env.STRIPE_PK,
        client_id: process.env.CLIENT_ID
      }
    }
    
  2. 混淆了客户端/服务器端配置:如果stripe_pk是客户端需要的公钥,应该放到runtimeConfig.public下(该字段下的内容会暴露给前端),服务器专用密钥则保留在根节点的apiSecret中:
    runtimeConfig: {
      // 仅服务端可用的敏感密钥
      apiSecret: {
        api_key: process.env.API_KEY
      },
      // 客户端可访问的公钥
      public: {
        stripe_pk: process.env.STRIPE_PK,
        client_id: process.env.CLIENT_ID
      }
    }
    

三、额外注意事项

  • 服务器上要设置好.env 文件的权限,仅允许运行 Nuxt 的用户读取该文件。
  • 确保.gitignore 里包含.env 相关文件,避免敏感信息提交到版本控制系统。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:31:16