fix bad security check

This commit is contained in:
Egor Koleda 2019-06-26 17:57:17 +03:00 committed by GitHub
parent 57359d18a8
commit 155e3ff367
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -17,6 +17,7 @@
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
@ -189,15 +190,7 @@ private static String sanitizeUri(String uri) {
// Convert file separators. // Convert file separators.
uri = uri.replace(File.separatorChar, '/'); uri = uri.replace(File.separatorChar, '/');
// Simplistic dumb security check. return Paths.get(uri).normalize().toString().substring(1);
// You will have to do something serious in the production environment.
if (uri.contains(File.separator + '.') ||
uri.contains('.' + File.separator) ||
uri.charAt(0) == '.' || uri.charAt(uri.length() - 1) == '.' ||
INSECURE_URI.matcher(uri).matches()) {
return null;
}
return uri.substring(1);
} }
private static final Pattern ALLOWED_FILE_NAME = Pattern.compile("[^-\\._]?[^<>&\\\"]*"); private static final Pattern ALLOWED_FILE_NAME = Pattern.compile("[^-\\._]?[^<>&\\\"]*");