我在我的node. js后端配置了一个名为admin
的变量,我调用admin.fi恢复()
。当我做控制台日志(admin.fi恢复())
时,我看到我的服务号的私钥已经显示在后端终端中。这是我看到的控制台日志:
Firestore {
_settings: {
credentials: {
private_key: 'my actual private key',
client_email: 'xxxxx'
},
projectId: 'pxxxx3',
firebaseVersion: '8.13.0',
libName: 'gccl',
libVersion: '3.8.6 fire/8.13.0'
},
_settingsFrozen: false,
_serializer: Serializer { createReference: [Function], allowUndefined: false },
_projectId: 'xxxxx',
registeredListenersCount: 0,
_lastSuccessfulRequest: 0,
_backoffSettings: { initialDelayMs: 100, maxDelayMs: 60000, backoffFactor: 1.3 },
_preferTransactions: false,
_clientPool: ClientPool {
concurrentOperationLimit: 100,
maxIdleClients: 1,
clientFactory: [Function],
clientDestructor: [Function],
activeClients: Map {},
terminated: false,
terminateDeferred: Deferred {
resolve: [Function],
reject: [Function],
promise: [Promise]
}
}
}
我有点担心它可能存在安全风险。虽然它在我后端的代码中。但是我应该担心吗?
如果数据只在您的后端可用,那么它是“安全的”,因为只有有权访问您的后端的人才能看到它。问题不在于数据在日志中,问题在于您允许谁查看该日志。
如果数据从未逃逸到客户端应用程序,那么您不必担心Internet上的随机人员会看到您的凭据。
IMHO,如果外部实体可以登录到您的系统,您就会遇到不同类型的问题。
如果你考虑一下,大多数环境变量必须在运行时放置在某个地方。它们不应该硬编码在你的代码中,但是在运行时,你需要一种机制来确保值被复制到你的系统中。之后,一切都是关于授权的,只有拥有正确权限的用户才应该被允许进入你的系统。