我写了一个Electron应用程序。它工作正常。我使用本地存储来保存可以在应用程序中进行的所有选项。这包括数据库配置。
在浏览器中,这可能是一个好主意,因为网站可能能够破解它?
这不是一个网站,而是一个Electron应用程序,除了主索引html文件外,它不会加载任何网页。
我应该使用本地存储进行数据库配置吗?
那么,如果我关心基本安全性,我应该使用本地存储进行数据库配置吗?它不是银行(不需要哈希(,但它不应该向世界开放。
除了主要问题外,周围还有一些可选的子问题。
- 如果这不是一个好主意,我应该使用什么?
- 如果这不是一个好主意,当我决定 html 中的内容时,它怎么会被黑客入侵?
- 本地存储不是文件。设置是否有可能丢失和消失?
我假设如下:
- 使用两层体系结构。客户端用Electron和数据库编写。
- 您将数据库的凭据放入由Electron应用程序操作的本地存储中。
- 数据库正在存储非公开数据,或其他需要某种完整性或机密性保护的数据。
- 数据库和架构是多租户的。
如果我上面所说的是正确的,那么不,您的解决方案不安全。您提供的解决方案不属于硬编码机密的类别,但非常接近。在内存中,您可能持有机密,这些机密可能会为用户提供与他已经拥有的相同级别的权限,例如他的会话 cookie 或令牌。您不得放置任何在获得时允许用户拥有更大访问权限的内容。
那么,如何解决这个问题。简单地说你不能。您可能想混淆或隐藏或加密数据,但混淆可以被打破,隐藏可以被找到,加密的数据必须在某个点使用密钥解密,而密钥必须位于某个地方。
解决方案是一个三层架构,应用程序服务器执行身份验证、授权和访问控制。除非您想玩并为每个用户提供他在数据库中自己的数据库模式/访问权限,否则这也可能是一种解决方案,但我不知道有人会这样做。
正如其他人所指出的,您绝对不应该将数据库连接机密放在客户端上。 只有当您可以控制其位置时,机密才会保密。 生活在客户端计算机上不是一个好地方,再多的加密也无法拯救你。 使用身份验证和访问控制配置应用程序服务器,并让客户端在到达数据层之前通过此门守进行通信。