使用 Rollup Replace 将环境变量传递到 sapper 的客户端安全吗?

Is passing environment variables to sapper's client side secure with Rollup Replace?

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

使用下面的配置:

    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 };

我已经在 server,js 中尝试 运行 并通过会话数据传递变量,但无论我做什么,客户端似乎总是 return 'undefined'。

这里有两个问题 — a) 它安全吗,b) 为什么值 undefined

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

至于第二部分,不幸的是没有复制品很难说!