【问题标题】:How to protect a file so it can only be accessed by java?如何保护文件,使其只能被java访问?
【发布时间】:2012-06-15 02:03:58
【问题描述】:

好的,我有一个文件夹说...http://oldserver.net/file/index.jar

如何保护“index.jar”文件不被从常规网络浏览器下载?

我以前见过这样做,我只是想保护它不被网络浏览器访问,并严格保持它仅限于 java 下载访问。

我所说的仅限 java 下载访问是指,我可以简单地使用 java 下载器来下载 index.jar。但是我不能通过网络浏览器下载它。

如何保护“index.jar”文件?

谢谢:)

【问题讨论】:

  • 什么样的Java下载器?跑哪儿去?
  • 也许值得指出的是,当浏览器访问小程序时,index.jar 会被下载并存储(缓存)在用户的机器上。扩展名被删除并重命名文件,但基本上该文件可用于本地访问。例如,在我的 Windows 机器上,它们存储在 $USER_HOME$\Application Data\Sun\Java\Deployment\cache

标签: java php security .htaccess web


【解决方案1】:

你需要考虑一下这个要求具体意味着什么——从你的服务器的角度来看,它如何判断传入的请求是否是“java下载”?

简而言之,我认为没有办法完全按照您的要求行事。保护资源的经典方法是要求身份验证(即您需要有效的用户名和密码才能获取 index.jar 文件),但这听起来不像您想要的。

请记住,Java 只是通过连接发送 HTTP 请求(或它知道如何说话的其他协议)。 任何其他程序都可以发送相同的请求,因此根本无法按照您指定的方式强制执行此限制。

一种可能模拟您所追求的方法是不让 index.jar 通过 HTTP 访问,因此浏览器默认无法访问它,然后通过 Java 中的另一个协议访问它(例如FTP、SFTP 等等)。尽管如上所述,任何可以使用这种新协议的工具都可以下载该文件。

另一种方法是查找特定于 Java 的标头,例如 User-Agent 字段(假设其中填充了可识别的内容)。但同样 - 这并不安全,因为任何工具都可以通过相同的标头发送并模拟 java 下载。


如果您在问题中的意思是您只希望您的文件由 特定 Java 应用程序下载,那么事情变得更加可行。您可以分发包含一些身份验证(例如公钥/私钥对)的应用程序,并在请求index.jar 时为此进行服务器质询。但即便如此,这也是值得怀疑的——根据定义,Java 应用程序必须包含足够的信息来验证自己的身份;根据定义,您必须公开发布此信息;因此提取私钥并让其他一些应用程序伪装成您的 Java 应用程序并不难。


基本上,鉴于您所说的范围,我看不出有什么办法可以解决这个问题。如果您愿意接受的范围较窄,您也许可以提出可行的折衷方案,但现在的答案是“不”。

【讨论】:

    【解决方案2】:

    从技术上讲,你不能。无论 HTTP Java 发出什么请求,都可以创建另一个 HTTP 客户端程序来发出同样的请求。

    但是,您可以稍微增加难度。您可以将文件放在 HTTP 摘要身份验证之后,并将密码包含在 Java 程序的 JAR 中,也可以检查用户代理服务器端的密码。

    参见例如get_browser() 和 Apache 2 authorization and authentication

    【讨论】:

      【解决方案3】:

      你可以让你的文件只读,这样就没有人可以修改实际的文件,但是会出现一个问题,即使是java也不能修改文件。

      所以如果你需要修改文件,你需要创建一个相同扩展名的新文件并将整个数据从主文件复制到新文件,删除主文件并修改新文件并将新文件的名称更改为旧文件名。

      java中有一个函数可以设置为只读:

      File newTempFile=new File("mytext.txt");
      newTempFile.setReadOnly();
      

      【讨论】:

        【解决方案4】:

        您可以创建一个为您的文件提供服务的 Web 应用程序。在这里,您可以检查请求中的用户代理字符串并决定该用户代理字符串是否提供文件。为此,您的“java 下载器”必须具有可识别的用户代理字符串,并且您的应用程序必须“知道”它。 当然,任何知道这一点的坏人都可以让他的浏览器向您发送相同的用户代理字符串,所以这并不安全:-/

        【讨论】:

          【解决方案5】:

          如果您的 index.jar 非常重要,请不要通过上述任何方法使其可供下载。只要它可以下载并最终在客户端计算机上,无论是否在 java 中,它都会被黑客入侵。 有些代码应该只在服务器上运行。

          【讨论】:

            猜你喜欢
            • 2011-01-12
            • 1970-01-01
            • 2017-05-29
            • 2014-04-12
            • 2012-10-02
            • 2016-03-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多