好的,我有一个文件夹说... http://oldserver.net/file/index.jar
我如何才能保护文件“index.jar”不被从常规网络浏览器下载?
我以前见过这样的做法,我只是想保护它不被网络浏览器访问,并使其严格仅限 java 下载访问。
我所说的仅 java 下载访问的意思是,我可以简单地使用 java 下载器来下载 index.jar。但是我无法通过网络浏览器下载它。
我将如何保护文件“index.jar”?
谢谢:)
最佳答案
您需要考虑此要求的具体含义 - 从您的服务器的角度来看,它如何判断传入请求是否为“java 下载”?
简而言之,我认为没有办法完全按照您的要求进行操作。保护资源的经典方法是要求身份验证(即您需要有效的用户名和密码才能获取 index.jar 文件),但这听起来并不是您想要的。
请记住,Java 只是通过连接发送 HTTP 请求(或它知道如何使用的其他协议(protocol))。 任何其他程序都可以发送相同的请求,因此根本无法按照您指定的方式强制执行此限制。
一种可能模拟您所追求的方法是不让 index.jar 可通过 HTTP 访问,因此浏览器将无法默认访问它,然后通过 Java 中的另一个协议(protocol)(例如FTP、SFTP 等等)。尽管如上所述,任何可以使用此新协议(protocol)的工具都可以下载该文件。
另一种方法是查找特定于 Java 的 header ,例如 User-Agent 字段(假设其中填充了可识别的内容)。但同样 - 这是不安全的,因为任何工具都可以通过相同的 header 发送并模拟 java 下载。
如果您在问题中的意思是您只想让特定 Java 应用程序下载您的文件,那么事情就变得更可行了。您可以分发包含某些身份验证(例如公钥/私钥对)的应用程序,并在请求 index.jar
时让服务器质询。但即便如此,这也是值得怀疑的——根据定义,Java 应用程序必须包含足够的信息来对自身进行身份验证;根据定义,您必须公开发布此信息;因此提取私钥并让其他应用程序伪装成您的 Java 应用程序并不困难。
基本上,考虑到您所说的限制,我看不出有什么办法可以解决这个问题。如果您愿意接受的范围更窄,您可能会想出一个可行的折衷方案,但现在答案很简单:“不”。
关于java - 如何保护文件,使其只能由 java 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447590/