我最近在OOP的大学项目中创build了一个使用Java的密码pipe理器。 为了处理数据库,我select了sqlite,因为使用MysqL或sql服务器对于一个小项目来说是忙碌的。 虽然我已经完成了这个提交,但是我想我是否可以在这个项目上做进一步的改进。
我观察到的最大的缺点是,如果有人能够在系统中find数据库的位置(这太容易了),打开数据库将会非常简单。
现在这里出现了两个问题 –
用户的密码列表将可见
任何人都可以使用sqlitepipe理器修改数据。
为了解决第一个问题,我已经使用AESencryption,它工作得很好。 但是,第二个问题依然存在。
java.net.MalformedURLException:本地主机名称unkNown:java.net.UnkNownHostException:
如何从unix连接到oracle数据库
启动MongoDB后出现“sync_file_range Function not implemented”错误
飞路3.1迁移校验和不匹配。 校验和的计算取决于平台
Crystal报表显示数据库login要求?
所以在坚果shell, 我怎样才能防止我的sqlite数据库被修改,除了从密码pipe理器本身?
要指出的是,我的应用程序只是在家用电脑上使用的离线密码pipe理器。 所以,你可以相应地考虑威胁的程度。 此外,密码pipe理器本身必须修改数据库内容,因此分配权限应该不会阻止应用程序这样做。
注:我想知道是否可以使用sqlite的限制,一次只能build立一个连接来写入数据。 使用这个入侵者将无法修改它。 但是,我不确定如何实施。
快速,二进制数据库替代
DBCP连接池loginTimeout
使用gnuplot来绘制sqlite数据库
重复整个MysqL数据库
Postgresqlgraphics化安装程序:指定的服务不作为已安装的服务存在
限制用户访问
只有 *** 作系统可以保护文件不被未经授权的人访问。 将数据库放入只能由当前用户访问的文件夹中,并为每个用户分别设置一个数据库。
加密
你已经在加密密码了,这很好。 如果你想加密整个数据库,你可以看看sqlite Encryption Extension 。
sqlite加密扩展(SEE)是sqlite的公共域版本的一个附加组件,允许应用程序读取和写入加密的数据库文件。
也看看sqlite加密/密码保护的问题 。
攻击
如果有人可以访问数据库文件,会发生什么?
如果数据库安全正确,攻击者无法获得普通密码(至少在合理的时间内)。 在最糟糕的情况下,密码会被另一个密码所取代,但是除了使用错误的密码并且可能会重置密码之外,这将不会有任何效果。 因此,最糟糕的情况是您将失去保存的密码。
您无法阻止单台计算机上的数据丢失。 例如硬盘有时会停止工作,有人可能会窃取整个电脑,格式化硬盘等。
备份
如果您确实要确保数据未被修改,则需要在不同的计算机上进行备份,以最大限度地减少有人访问所有计算机的可能性。 例如,您可以将数据库文件上传到云服务。 然后你签名文件,这样你就可以看到一个文件是否妥协,如果这样可以退回到另一个版本。
结论
您的密码管理器足够用于离线工具。 如果要提高数据完整性,则必须将数据传输到其他计算机。
总结以上是内存溢出为你收集整理的防止在SQLite中从外部来源修改数据全部内容,希望文章能够帮你解决防止在SQLite中从外部来源修改数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)