Next.js 添加到next.config.js的机密的安全性

Next.js 添加到next.config.js的机密的安全性,next.js,auth0,vercel,Next.js,Auth0,Vercel,我们正在努力将Auth0添加到我们的Next.js网站并参考示例 我想知道的是示例中的设置。它通过网页包将Auth0和其他机密放入客户端。这不是让这些秘密处于危险之中吗?因为它们在客户端代码中的某个地方,所以有可能会请求访问这些机密 示例还将秘密放入客户机中 我还没有发现Webpack是如何处理变量的,我希望社区能对此有所帮助。我们正在努力确保我们的模式在实施之前是安全的 例如,将机密添加到客户端next.config.js: const dotenv=require'dotenv' doten

我们正在努力将Auth0添加到我们的Next.js网站并参考示例

我想知道的是示例中的设置。它通过网页包将Auth0和其他机密放入客户端。这不是让这些秘密处于危险之中吗?因为它们在客户端代码中的某个地方,所以有可能会请求访问这些机密

示例还将秘密放入客户机中

我还没有发现Webpack是如何处理变量的,我希望社区能对此有所帮助。我们正在努力确保我们的模式在实施之前是安全的

例如,将机密添加到客户端next.config.js:

const dotenv=require'dotenv' dotenv.config module.exports={ 环境:{ AUTH0\u域:process.env.AUTH0\u域, AUTH0\u客户端\u ID:process.env.AUTH0\u客户端\u ID, AUTH0\u CLIENT\u SECRET:process.env.AUTH0\u CLIENT\u SECRET, AUTH0_作用域:“openid配置文件”, 重定向\u URI: process.env.REDIRECT_URI | |'http://localhost:3000/api/callback', POST\u注销\u重定向\u URI: process.env.POST_注销_重定向_URI||http://localhost:3000/', 会话\u COOKIE\u SECRET:process.env.SESSION\u COOKIE\u SECRET, 会话\u COOKIE \u生存期:7200,//2小时 }, } 不要将任何秘密环境变量放在客户端可以访问的地方

我不确定下一步如何处理这个env属性,它只是一个网页包DefinePlugin,将process.env.VAR的用法替换为它的值

所以,这意味着您的秘密将在公开的包中

为了确认它在客户机中公开

开放式开发工具 通过打开控制台 按esc键 单击搜索选项卡 输入您的密钥 它将在其中一个包中找到它

更新-下一版本9.4 自Next.js v9.4以来,它只向浏览器公开前缀为Next_PUBLIC_uu的环境变量。 有关详细信息,

请不要将任何机密环境变量放置在客户端可以访问的位置

我不确定下一步如何处理这个env属性,它只是一个网页包DefinePlugin,将process.env.VAR的用法替换为它的值

所以,这意味着您的秘密将在公开的包中

为了确认它在客户机中公开

开放式开发工具 通过打开控制台 按esc键 单击搜索选项卡 输入您的密钥 它将在其中一个包中找到它

更新-下一版本9.4 自Next.js v9.4以来,它只向浏览器公开前缀为Next_PUBLIC_uu的环境变量。
有关更多信息,请参见

谢谢@felixmosh的回复。事实上,我已经做了那个搜索。搜索唯一为正的时间是显式调用process.env.VAR时。否则它们就不会出现。我觉得很奇怪。这就是我提出这个问题的原因,为了弄清楚这一切。Auth0将nextjs用于他们的站点,Zeit将Auth0用于他们的站点。这就是他们提供的例子,对我来说似乎是不安全的。这是有道理的,如果你不使用变量本身,DefinePlugin不会将它替换为它的值。但是,一步暴露敏感数据是错误的。谢谢@felixmosh的回复。事实上,我已经做了那个搜索。搜索唯一为正的时间是显式调用process.env.VAR时。否则它们就不会出现。我觉得很奇怪。这就是我提出这个问题的原因,为了弄清楚这一切。Auth0将nextjs用于他们的站点,Zeit将Auth0用于他们的站点。这就是他们提供的例子,对我来说似乎是不安全的。这是有道理的,如果你不使用变量本身,DefinePlugin不会将它替换为它的值。但是,它在一步暴露敏感数据上犯了一个错误。