我正在使用JAVA(J2SE)开发桌面应用程序 我的应用程序存储一些关于用户的数据。 应用程序。是多用户,将安装在一个站上 每个用户可以拥有一些应该存储在文件系统中的文档(例如图像,音频......) 我需要保护这些文件不被未经授权的用户直接访问 用户在应用程序本身中定义(我需要只能通过应用程序访问文件)
如何保护这些文件免遭未经授权的访问?
我考虑过将文件存储在另一个系统中并通过网络访问它们 我如何在JAVA中执行此操作(在安全的网络计算机中存储/检索文件)?
这是一个好方法吗?更好的解决方案?
由于
修改
能解密:
我的用户在应用程序中定义:所有用户使用相同的计算机;所有用户在OS中使用相同的用户名登录;每个用户使用自己的用户/通行证登录应用程序;每个用户都应该有权访问应用程序决定的文件
因此,用户必须无法打开文件管理器并遍历文件存储在&amp ;;复制它们(虽然无法访问它们)
答案 0 :(得分:1)
而不是推出自己的安全解决方案 - 这将是繁琐的,几乎肯定是错误的,并且很容易受到各种攻击 - 只需使用操作系统的文件系统权限。
最简单的方法是将用户数据写入当前用户的home directory。除非用户明确配置目录的权限以允许它们,否则其他用户将无法访问它。
如果需要,您还可以进一步restrict the permissions目录。
答案 1 :(得分:1)
由于所有用户都使用相同的操作系统登录帐户,因此操作系统无法使用操作系统来强制执行访问控制,因为操作系统会将每个人识别为一个人。我只能想到一个(不太好,或实际上很糟糕)解决方案,不需要另一台计算机:使用每个用户的密码加密文件。但是,这意味着每次用户更改密码时都必须重新加密所有文件,这会引入不可接受的延迟并使用大量的计算能力。
还有很多其他方法可以隐藏用户的信息,只允许从您的程序访问。隐藏可以阻止大多数平庸的用户访问数据,但具有编程技能的确定人员将能够访问数据。一个简单的例子是对程序中的所有字节进行xor,和/或使用多个固定模式对字节进行置换。如果数据不是那么重要,这可能是一个“解决方案”。
我不确定是否有其他方法而不需要另一台计算机。
因此,只留下将信息存储在分离的计算机上的选项。我认为这是可能的,但我不知道这里的细节。
然后出现这个问题:用户A从他的应用程序帐户打开一个文件,使用它,然后他退出应用程序帐户,并退出常见的OS帐户,然后用户B登录到公共OS帐户。您必须确保在用户A退出应用帐户后,用户B无法看到用户A正在处理的文件。
我不确定是否应该关注应用程序。
答案 2 :(得分:0)
一种选择是使用SFTP。这样您就可以利用SFTP安全功能。但是当然这需要一些管道代码来编写它。