Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保护文件,使其只能由java访问?_Java_Php_Security_.htaccess_Web - Fatal编程技术网

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

如何保护文件,使其只能由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

好的我有一个文件夹说

我如何才能保护文件“index.jar”不被从常规web浏览器下载

我以前见过这样做,我只是想保护它不被web浏览器访问,并严格保持它只允许java下载访问

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

如何保护文件“index.jar”


谢谢:)

从技术上讲,你不能。无论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();