帐户是新的,但我已经在这个网站上阅读了多年,我现在需要一些建议。我对Java还是很陌生,我正在开发一个桌面应用程序,它可以处理与用户有关的个人信息,也可以处理他们的社交圈。保持这些信息安全的最佳选择是什么?我不考虑外部DB(像MySql,我使用到目前为止我的测试版),因为这意味着潜在的用户将不得不安装和配置一些其他软件,也不考虑序列化,因为我真的不喜欢外部文本文件的想法(请纠正我,如果我错了这两点)。有没有一种方法可以直接在应用程序中存储信息?有人能给我一些关于这件事的看法和建议线索吗?(抱歉,如果以前的线程涵盖了我的担忧,我没有找到它!)提前感谢!
晚安,晚上,白天或早上!
现代操作系统设计和安全原则强烈要求应用程序不应该对其自身具有写访问权限。有一些很蹩脚的方法(复杂,很难写,大多数库不能很好地使用它,而且很脆弱,因为它很容易在某些系统上崩溃)来写到你自己的jar中,但无论如何这都是一个糟糕的设计,更不用说当你考虑到复杂和脆弱的时候了。
你不能合理地加密任何东西(因为密码必须在应用程序内部)除非用户必须在启动你的应用程序/打开你的"存储文件"时输入解密密码,如果这是一个多文档的交易,在这种情况下,无论如何,这样做。
h2是一个全java数据库引擎,用户不需要单独安装任何东西,它生成一个带有数据的单一文件。或者将您自己的序列化处理到用户home或~/Documents或诸如此类的单独文件中。如果你不想"写入用户的主目录.myapp.bin
",你必须为每个主要的操作系统硬编码正确的位置,而你可以通过System.getProperty("user.home")
轻松地做到这一点。
所以,是的,你在这两点上都错了:
- DB/SQL很好——没有必要强制用户安装一个单独的库。sqlite可以做到这一点(但这涉及到dll等;sqlite JDBC驱动程序会处理这个),但是我推荐使用h2database.com。
- 将是一个文件。它不会是一个txt文件。