![]() |
1
6
你需要考虑这个需求的具体含义——从服务器的角度来看,它如何判断传入的请求是否是“Java下载”? 简言之,我不认为有什么方法可以做到你想要的。保护资源的经典方法是要求身份验证(即,您需要一个有效的用户名和密码来获取index.jar文件),但这听起来不像您想要的那样。 请记住,Java只是简单地发送HTTP请求(或者它知道如何发言的其他协议)来降低连接。 任何其他程序都可以发送相同的请求 ,所以完全没有办法按照您指定的方式强制执行这个限制。 一种可能模拟你正在进行的方法是不通过HTTP访问索引.jar,因此浏览器在默认情况下无法访问它,然后通过Java中的另一个协议(例如FTP、SFTP等等)访问它。尽管如上所述,任何能说出这个新协议的工具都可以下载这个文件。 另一种方法是查找Java特定的头文件,例如用户代理字段(假设填充有可识别的东西)。但是,这是不安全的,因为任何工具都可以通过相同的标题发送并模拟Java下载。
如果你的问题是你只希望你的文件被
具体的
Java应用程序,然后事情变得更加可行。您可以分发一个包含一些身份验证(例如,公钥/私钥对)的应用程序,并在以下情况下对其进行服务器质询:
基本上,考虑到你所说的限制,我看不出有什么办法可以解决这个问题。如果有一个更窄的范围,你愿意招待你可能会想出一个可行的妥协,但现在的答案是简单的“不”。 |
![]() |
2
1
技术上,你不能。无论HTTP Java做出什么请求,都可以做出另一个HTTP客户端程序。 但是,您可以使它稍微困难一些。您可以将文件放在HTTP摘要认证后面,并将密码包含在Java程序的jar中的密码中,或者可以检查用户代理服务器端。
参见
|
![]() |
3
1
你可以让你的文件只读,这样就没有人可以修改实际文件,但出现了一个问题,即使Java无法修改文件。 因此,如果您需要修改文件,您需要创建一个扩展名相同的新文件,并将整个数据从主文件复制到新文件,删除主文件,修改新文件,并将新文件的名称更改为旧文件名。 在Java中有一个函数设置只读:
|
![]() |
4
0
您可以创建一个为您的文件服务的Web应用程序。在这里,您可以检查请求中的用户代理字符串,并决定该用户代理字符串是否为文件服务。为此,您的“Java下载器”必须有一个可识别的用户代理字符串,而应用程序必须“知道”它。 当然,任何知道这一点的坏人,都会让他的浏览器向您发送相同的用户代理字符串,所以这在不太安全的情况下:-/ |
![]() |
5
0
如果index.jar非常重要,请不要使用上述任何方法下载它。一旦它可以下载并在客户端计算机上结束,在Java内部或没有,它就会被黑客攻击。 一些代码应该只在服务器上运行。 |
![]() |
Michael · 某些Windows客户端上的命名管道安全问题 1 年前 |
![]() |
adamency · 是否可以从Go二进制文件的源代码中检索字符串? 1 年前 |
![]() |
AlboSimo · PayPal Api密钥安全 1 年前 |