- 此问题在此处已有答案**:
Best way to store encryption keys in .NET C#(7个答案)
6天前关闭。
截至6天前,社区正在审查是否重新讨论此问题。
在我的C#项目中,我需要使用SQLite Cipher来存储一些数据,而数据库的密码也遇到了问题:存放在哪里。
我的应用程序应该能够在离线时工作(与任何服务器断开连接)。所以这意味着密码必须保存在一些加密文件或源代码中。
如果密码保存在加密文件中,那么下一个问题是在哪里保存加密文件的密码...
我公司对软件安全有严格要求,如不能硬编码密码等。
有什么建议吗?
1条答案
按热度按时间t40tm48m1#
这是一个经典问题,没有完美的解决方案,只有“不太坏”的解决方案。
通常,主密码存储在只有机器的根帐户或启动进程可以访问的文件/位置中。
root/startup帐户读取密码,然后作为无权访问密码文件的低权限进程启动应用程序,并向其提供密码。
我公司对软件安全有严格要求,如不能硬编码密码等。
如何实现这一点取决于贵公司的具体标准,完全有可能他们不允许将其存储在任何地方,而需要人工在启动时输入凭据。
这并不常见,但在一些非常高风险的情况下会这样做。
与其猜测,我会建议询问他们当前的软件如何实现这些需求,并做他们当前做的任何事情。
安全和加密是非常容易做得很差,即使它看起来正确。