我意识到这通常被描述为一个坏主意。所以首先我会陈述动机 - 随时批评这一点。
为倾向于过度关注安全性的行业创建产品。产品需要存储和返回用户文件,但它们不需要是服务器端可读的。
我觉得通过加密客户端会减少客户所需的信任。他们的机密数据只会被他们可以检查和监控的 JavaScript 触及。这也意味着任何允许访问存储数据的服务器端安全问题都不会导致客户端文档可用(如果他们可以修改提供的 JS 则除外)。
我理想的解决方案是——
- Key generated and injected to all clients users by clients IT team.
- JavaScript uses key to encrypt documents client side. These are then sent to the server and stored.
- On retrieval documents are decrypted again client side.
似乎有几个库支持客户端加密。但是目前我看不到为用户持久存储密钥的方法。理想情况下,这与将证书添加到浏览器存储中的方式类似——即它们可以被注入一次。
有没有人有什么建议?