我一直致力于开发此分析工具,以帮助解释和分析捆绑在软件包中的数据库。对我们来说,以只能使用我们的软件访问的方式保护数据库非常重要。在Python中实现它的最佳方法是什么?
我知道可能没有确定的解决方案,但威慑是真正重要的。
非常感谢你。
答案 0 :(得分:4)
有人通过将SQLCipher重建为DLL并替换Python的sqlite3.dll here,让Python和SQLCipher一起工作。
答案 1 :(得分:3)
这个问题大约每月一次在SQLite用户邮件列表中出现。
无论您使用多少加密等,如果数据库位于客户端计算机上,则解密密钥也将在某个时刻位于计算机上。攻击者将能够获取该密钥,因为它是他们的计算机。
更好的方法是考虑金钱 - 坏人需要花多少才能获得数据。这通常最多只需几百美元。只需要任何一个人获得密钥,他们就可以为每个人发布数据库。
所以要么去Donal提到的网络服务,要么只花几分钟来模糊数据库。例如,如果您使用APSW,那么您可以在几行中编写一个VFS来对数据库内容进行异或,这样常规的SQLite就不会打开它,文件查看器也不会显示正常的SQLite标题。 (APSW中有示例代码,显示了如何执行此操作。)
因此,任何拥有数据库内容的人都必须知情。