禁止Java URL获取本地文件?
我有一个Java web应用程序,它具有使用获取远程文件的功能 在测试代码时,我发现匿名用户可以通过将文件路径禁止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
/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”,则可以抛出异常,具体取决于您希望使其具有多大的限制)