【问题标题】:Is passing environment variables to sapper's client side secure with Rollup Replace?使用汇总替换将环境变量传递到工兵的客户端是否安全?
【发布时间】:2020-06-19 16:02:47
【问题描述】:

我在我的 sapper 和 sapper-environment 汇总配置中使用 replace 将环境变量传递给 sapper 中的客户端 - 这安全吗?有没有更好/更安全的方法来解决这个问题?

使用下面的配置:

    rollup.config.js

    const sapperEnv = require('sapper-environment');    

    export default {
        client: {
            input: config.client.input(),
            output: config.client.output(),
            plugins: [
                replace({
                    ...sapperEnv(),
                    'process.browser': true,
                    'process.env.NODE_ENV': JSON.stringify(mode)
                })
    ...

然后这允许我使用 stores.js 中的变量:

import { writable } from 'svelte/store';
import Client from 'shopify-buy';

const key = process.env.SAPPER_APP_SHOPIFY_KEY;
const domain = process.env.SAPPER_APP_SHOPIFY_DOMAIN;

// Initialize a client
const client = Client.buildClient({
    domain: domain,
    storefrontAccessToken: key
});

export { key, domain, client };

我尝试在服务器、js 中运行它并通过会话数据传递变量,但客户端无论我做什么,它们似乎总是返回“未定义”。

【问题讨论】:

    标签: environment-variables svelte rollupjs sapper


    【解决方案1】:

    这里有两个问题 - a) 它是否安全,以及 b) 为什么值是 undefined

    第一个问题的答案是“不”。每当您在提供给客户端(或会话数据)的 JavaScript 中包含凭据时,您就可以将这些凭据提供给知道如何查找它们的任何人。如果您需要避免这种情况,您将需要您的服务器(或另一台服务器)代表经过身份验证的客户端发出请求。

    至于第二部,可惜没有复制就很难说了!

    【讨论】:

    • 感谢您对安全性的说明。我试图只使用 server.js 中的环境变量并调用 shopify 初始化客户端,但我认为我无法将它传递给中间件,因为当它通过贬值运行时它会失败,因为函数包含自定义类。有解决办法吗?我尝试只导出返回的值,它在客户端一直返回为“客户端未定义”。
    • 作为参考,当我在 server.js 中初始化 shopify 客户端并尝试在客户端显示变量时,我什么也没得到,浏览器中的控制台读取 - TypeError: Error resolving module specifier: fs ?这是代码的REPL
    • 我也有类似的问题。我只想传递一些 process.env 字段,这样我就不必对 api 协议、主机和端口进行硬编码。我发现很难将它们传递给路由组件。有一个预加载功能,但我希望可以直接从组件中获得值。
    • @SMBNS 您无法在 REPL 中运行 Sapper 应用程序。鉴于您的错误消息,听起来您正在将特定于服务器的代码导入在客户端中运行的应用程序部分
    • 谢谢@RichHarris - 我知道它不会在 REPL 中运行它更多的是显示我正在使用的代码。我发现我要使用的 API 是未经身份验证的,因此可能可以安全地通过客户端。但我会尝试使用服务器路由或类似方法,看看是否能实现我想要的。
    猜你喜欢
    • 2019-08-04
    • 2020-08-15
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2018-10-07
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多