如何保护文件,使其只能由java访问?
好的我有一个文件夹说 我如何才能保护文件“index.jar”不被从常规web浏览器下载 我以前见过这样做,我只是想保护它不被web浏览器访问,并严格保持它只允许java下载访问 我所说的java下载访问只是指,我可以简单地使用java下载程序下载index.jar。但我不能通过网络浏览器下载 如何保护文件“index.jar”如何保护文件,使其只能由java访问?,java,php,security,.htaccess,web,Java,Php,Security,.htaccess,Web,好的我有一个文件夹说 我如何才能保护文件“index.jar”不被从常规web浏览器下载 我以前见过这样做,我只是想保护它不被web浏览器访问,并严格保持它只允许java下载访问 我所说的java下载访问只是指,我可以简单地使用java下载程序下载index.jar。但我不能通过网络浏览器下载 如何保护文件“index.jar” 谢谢:)从技术上讲,你不能。无论HTTP Java发出什么请求,都可以发出另一个发出相同请求的HTTP客户端程序 但是,您可以使它稍微困难一些。您可以将该文件置于HTT
谢谢:)从技术上讲,你不能。无论HTTP Java发出什么请求,都可以发出另一个发出相同请求的HTTP客户端程序 但是,您可以使它稍微困难一些。您可以将该文件置于HTTP摘要身份验证之后,并将密码包含在Java程序的JAR中,也可以检查用户代理服务器端
请参阅例如和Apache 2。从技术上讲,您不能。无论HTTP Java发出什么请求,都可以发出另一个发出相同请求的HTTP客户端程序 但是,您可以使它稍微困难一些。您可以将该文件置于HTTP摘要身份验证之后,并将密码包含在Java程序的JAR中,也可以检查用户代理服务器端
请参阅例如和Apache 2。您需要考虑此要求的具体含义-从服务器的角度来看,它如何判断传入请求是否为“java下载” 简言之,我认为没有一种方法可以完全满足你的要求。保护资源安全的经典方法是要求进行身份验证(即,获取index.jar文件需要有效的用户名和密码),但听起来这不是您想要的 请记住,Java只是通过连接发送HTTP请求(或它知道如何使用的其他协议)任何其他程序都可以发送相同的请求,因此根本无法按照您指定的方式强制执行此限制 一种可能模拟您所追求的方法是不通过HTTP访问index.jar,这样浏览器在默认情况下就无法访问它,然后通过Java中的另一个协议(例如FTP、SFTP等)访问它。尽管如上所述,任何能够使用此新协议的工具都可以下载该文件 另一种方法是查找特定于Java的头文件,例如用户代理字段(假设该字段填充了可识别的内容)。但同样,这是不安全的,因为任何工具都可以通过相同的头发送数据并模拟java下载
如果您在问题中的意思是您只希望文件由特定的Java应用程序下载,那么事情就变得更可行了。您可以分发包含某些身份验证(例如公钥/私钥对)的应用程序,并在请求
index.jar
时对此进行服务器质询。但即便如此,这也是值得怀疑的——根据定义,Java应用程序必须包含足够的信息来进行身份验证;根据定义,你必须公开发布这些信息;因此,提取私钥并将其他应用程序伪装成Java应用程序并不困难
基本上,考虑到你所说的限制,我看不出有什么办法可以解决这个问题。如果您愿意接受的范围较窄,那么您可能会想出一个可行的折衷方案,但现在的答案只是“不”。您需要考虑这一要求的具体含义——从服务器的角度来看,它如何判断传入的请求是否为“java下载” 简言之,我认为没有一种方法可以完全满足你的要求。保护资源安全的经典方法是要求进行身份验证(即,获取index.jar文件需要有效的用户名和密码),但听起来这不是您想要的 请记住,Java只是通过连接发送HTTP请求(或它知道如何使用的其他协议)任何其他程序都可以发送相同的请求,因此根本无法按照您指定的方式强制执行此限制 一种可能模拟您所追求的方法是不通过HTTP访问index.jar,这样浏览器在默认情况下就无法访问它,然后通过Java中的另一个协议(例如FTP、SFTP等)访问它。尽管如上所述,任何能够使用此新协议的工具都可以下载该文件 另一种方法是查找特定于Java的头文件,例如用户代理字段(假设该字段填充了可识别的内容)。但同样,这是不安全的,因为任何工具都可以通过相同的头发送数据并模拟java下载
如果您在问题中的意思是您只希望文件由特定的Java应用程序下载,那么事情就变得更可行了。您可以分发包含某些身份验证(例如公钥/私钥对)的应用程序,并在请求
index.jar
时对此进行服务器质询。但即便如此,这也是值得怀疑的——根据定义,Java应用程序必须包含足够的信息来进行身份验证;根据定义,你必须公开发布这些信息;因此,提取私钥并将其他应用程序伪装成Java应用程序并不困难
基本上,考虑到你所说的限制,我看不出有什么办法可以解决这个问题。如果你愿意接受的范围较窄,你可能会想出一个可行的折衷方案,但现在的答案只是“不”。你可以创建一个为你的文件服务的web应用程序。在这里,您可以检查请求中的用户代理字符串并决定
File newTempFile=new File("mytext.txt");
newTempFile.setReadOnly();