在vb.net代码中提供SQLITE加密密码的最佳方法

问题描述

原则上,很容易加密sqlite文件,并且在stackoverflow和我的其他站点上提供了vb.net和其他语言的代码示例。所有方法(至少我发现的方法)都将密码硬编码到源代码中,然后在查询期间提交给sqlite连接器。

我很好奇,如果这实际上是这样做的最佳实践。我可以想象,很容易从编译的二进制文件提取密码。感谢您的提示

解决方法

加密不会解决问题,它会转移问题。您有一个要保护的纯文本。您用秘密加密。现在,您有了一个要保护的秘密。你用它做什么?加密?您已经做过一次。再次执行时,它会改变任何东西吗?

另一方面,将机密信息保存在二进制文件中可能是错误的方法,因为它通常意味着您还将机密信息保存在存储库的源代码中。这增加了应用程序的攻击面,通常是我们要避免的事情。那秘密在哪里呢?第二个最佳选择是将机密信息保存在需要的地方-在执行二进制文件的服务器上(并且仅在服务器上)执行。这种方法还遵循Twelve-Factor App的规则,您希望在其中将配置保留在环境中。

使该应用程序在技术用户下运行。将所有机密信息放入受文件系统访问权限保护的文件中,以便只有技术用户才能读取它们。这是XXI世纪在没有其他硬件令牌支持的情况下可以得到的最好的结果。启动应用程序时,像手动机密输入这样的魔术对任何人来说都是不切实际的。