0

我正在用 JAVA (J2SE) 开发桌面应用程序。
我的应用程序。存储有关用户的一些数据。应用程序。是多用户,将安装在单个站点上。
每个用户都可以有一些应该存储在文件系统中的文档(例如图像、音频……)
我需要保护这些文件不被未经授权的用户直接访问。
用户在应用程序本身中定义(我需要文件只能通过应用程序访问)

如何保护这些文件免受未经授权的访问?

我考虑将文件存储在另一个系统中并通过网络访问它们。
如何在 JAVA 中执行此操作(在安全的网络计算机中存储/检索文件)?

这是一个好方法吗?有更好的解决方案吗?

谢谢

编辑:
说明:
我的用户在应用程序中定义:所有用户使用同一台计算机;所有用户在操作系统中使用相同的用户名登录;每个用户使用自己的用户/通行证登录应用程序;每个用户都应该有权访问应用程序决定的文件。
因此,用户不能打开文件管理器并遍历存储文件的目录并复制它们(虽然无权访问它们)

4

3 回答 3

1

由于所有用户都使用相同的操作系统登录帐户,因此不可能使用操作系统的设施来实施访问控制,因为操作系统将每个人都视为一个人。我只能想到一个不需要另一台计算机的(不太好,或者实际上很糟糕)解决方案:使用每个用户的密码加密文件。但是,这意味着每次用户更改密码时都必须重新加密所有文件,这会引入不可接受的延迟并使用大量计算能力。

还有很多其他方法可以向用户隐藏信息,并且只允许从您的程序访问。隐藏可以阻止大多数平庸的用户访问数据,但具有编程技能的坚定的人将能够使数据可访问。一个简单的例子是对程序中的所有字节进行异或运算,和/或用多个固定模式置换字节。如果数据不是那么关键,这是一个可能的“解决方案”。

我不确定是否有其他方法不需要另一台计算机。

这样就只剩下将信息存储在单独的计算机上的选项了。我认为这是可能的,但我不知道这里的细节。


然后出现这个问题:用户A从他的应用程序帐户打开一个文件,使用它,然后他退出应用程序帐户,并退出普通操作系统帐户,然后用户B登录普通操作系统帐户。您必须确保在用户 A 退出应用帐户后,用户 B 无法看到用户 A 正在处理的文件。

我不确定这是否应该处理该应用程序。

于 2012-05-29T08:00:19.043 回答
1

与其推出自己的安全解决方案——这会很麻烦,几乎可以肯定有漏洞,而且很可能容易受到各种攻击——只需使用操作系统的文件系统权限。

最简单的方法是将用户数据写入当前用户的主目录。除非用户明确配置目录的权限以允许他们访问,否则其他用户将无法访问它。

如果需要,您还可以进一步限制目录的权限

于 2012-05-29T06:54:12.463 回答
0

一种选择是使用SFTP。这样您就可以利用 SFTP 安全功能。但是当然,这将需要围绕它编写一些管道代码。

于 2012-05-29T07:22:54.283 回答