Sah*_*rsh 8 java sql database windows sqlite
我最近在OOP中为我的大学项目创建了一个使用Java的密码管理器.为了处理数据库,我选择了SQLite,因为使用MySQL或SQL服务器对于一个小项目来说变得忙碌.虽然我已经完成了提交,但我在想是否可以在项目中进一步改进.
我观察到的最大缺点是,如果有人设法在系统中找到数据库的位置(这太简单了),打开数据库将非常简单.
现在这里出现了两个问题 -
为了解决第一个问题,我已经使用了AES加密,它运行得很好.但是,第二个问题仍然存在.
所以在一个坚果shell中,我如何防止我的SQLite数据库被修改,除了密码管理器本身?
请注意,我的应用程序只是家用PC上使用的脱机密码管理器.因此,您可以相应地考虑威胁级别.此外,密码管理器本身必须修改数据库内容,因此分配权限应该不会阻止应用程序这样做.
注意:我想知道我们是否可以使用SQLite的限制,一次只能建立一个写入数据的连接.使用这个,入侵者将无法修改它.但是,我不确定它是如何实现的.
限制用户访问
只有操作系统才能保护文件免遭未经授权的人员访问。将数据库放入一个文件夹中,该文件夹只能由当前用户访问,并且每个用户都有一个单独的数据库。
加密
您已经对密码进行了加密,这很好。如果你想加密整个数据库,你可以看看SQLite Encryption Extension。
SQLite 加密扩展 (SEE) 是 SQLite 公共域版本的附加组件,允许应用程序读取和写入加密的数据库文件。
另请参阅问题SQLite with encryption/password Protection。
攻击
如果有人有权访问数据库文件,实际上会发生什么?
如果数据库得到适当的保护,攻击者就无法获得纯密码(至少在合理的时间内)。在最坏的情况下,密码会被替换为另一个密码,但这除了您使用错误的密码并可能重置密码之外,不会有任何效果。因此,最坏的情况是您将丢失保存的密码。
您无法采取任何措施来防止单台计算机上的数据丢失。例如,硬盘有时会停止工作,有人可能会窃取整个电脑、格式化硬盘等。
备份
如果您确实想确保数据不被修改,则需要在不同的计算机上保留备份,以最大程度地减少某人访问所有数据的可能性。例如,您可以将数据库文件上传到云服务。然后对文件进行签名,以便您可以查看文件是否受到威胁,如果是,则回退到另一个版本。
结论
您的密码管理器对于离线工具来说已经足够好了。如果您想提高数据完整性,则必须将数据传输到其他机器。
归档时间: |
|
查看次数: |
231 次 |
最近记录: |