使用 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 中包含提供给客户端(或会话数据)的凭据,您就可以让知道如何查找它们的任何人都可以使用这些凭据。如果您需要避免这种情况,您将需要您的服务器(或其他服务器)代表经过身份验证的客户端发出请求。
至于第二部分,不幸的是没有复制品很难说!
我在 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 中包含提供给客户端(或会话数据)的凭据,您就可以让知道如何查找它们的任何人都可以使用这些凭据。如果您需要避免这种情况,您将需要您的服务器(或其他服务器)代表经过身份验证的客户端发出请求。
至于第二部分,不幸的是没有复制品很难说!