java - 如何保护文件,使其只能由 java 访问?

标签 java php security .htaccess web

好的,我有一个文件夹说... 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/

相关文章:

java - Cassandra 中的特殊字符搜索

php - 查询忽略排行榜中的重复列

java - 对私有(private)类成员的引用怎么可能是危险的

Java:JTextAreas后面的JPanel的MouseListener

java - 使用 mongodb 查找,同时使用 java 中的吗啡迭代列表

php - 自动将 SQL 表内容发送到电子邮件地址

php - 是否可以像这样检查多个单选按钮?

java - 为什么需要验证通过调用 HttpSession.getAttribute() 获得的 servlet 中的数据?

security - 更改预先存在的数据库上的散列函数

java - "Unable to load library: JNA native support not found in resource path"尝试在 Mac OS X 上加载 JNA 库