Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 URL获取本地文件?_Java_Url_Security - Fatal编程技术网

禁止Java URL获取本地文件?

禁止Java URL获取本地文件?,java,url,security,Java,Url,Security,我有一个Java web应用程序,它具有使用获取远程文件的功能 在测试代码时,我发现匿名用户可以通过将文件路径/etc/passwd修改为来读取本地文件file:///etc/passwd,文件将通过URL读取,下面是一个示例: String remoteUrl = "file:///etc/passwd"; // some url we got from anonymous user URL url = new URL(remoteUrl); byte data[] = new byte[10

我有一个Java web应用程序,它具有使用获取远程文件的功能

在测试代码时,我发现匿名用户可以通过将文件路径
/etc/passwd
修改为
来读取本地文件file:///etc/passwd
,文件将通过URL读取,下面是一个示例:

String remoteUrl = "file:///etc/passwd"; // some url we got from anonymous user
URL url = new URL(remoteUrl);
byte data[] = new byte[1024];
int length;

BufferedInputStream inputStream = new BufferedInputStream(url.openStream());

ServletOutputStream outputStream = response.getOutputStream();
// OR PrintStream outputStream = System.out;

while( (length = inputStream.read(data, 0, 1024)) >= 0 ) {
    outputStream.write(data, 0, length);
}

是否有解决此问题的建议?

在对某些文件夹具有受限访问权限的用户下执行此过程。这将在操作系统级别进行处理,操作系统将根据定义的权限允许该过程。

如果您使用URL,您可以从中获取协议。在这种情况下,如果协议是“文件”(或者不是“http”,则可以抛出异常,具体取决于您希望使其具有多大的限制)