mirror of
https://github.com/github/codeql.git
synced 2025-12-18 09:43:15 +01:00
59 lines
1.8 KiB
Java
59 lines
1.8 KiB
Java
package com.example;
|
|
|
|
import javax.faces.context.FacesContext;
|
|
import java.io.BufferedReader;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import java.util.Map;
|
|
|
|
/** Sample class of JSF managed bean */
|
|
public class UnsafeResourceGet2 {
|
|
// BAD: getResourceAsStream constructed from `ExternalContext` without input validation
|
|
public String parameterActionBad1() throws IOException {
|
|
FacesContext fc = FacesContext.getCurrentInstance();
|
|
Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
|
|
String loadUrl = params.get("loadUrl");
|
|
|
|
InputStreamReader isr = new InputStreamReader(fc.getExternalContext().getResourceAsStream(loadUrl));
|
|
BufferedReader br = new BufferedReader(isr);
|
|
if(br.ready()) {
|
|
//Do Stuff
|
|
return "result";
|
|
}
|
|
|
|
return "home";
|
|
}
|
|
|
|
// BAD: getResource constructed from `ExternalContext` without input validation
|
|
public String parameterActionBad2() throws IOException {
|
|
FacesContext fc = FacesContext.getCurrentInstance();
|
|
Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
|
|
String loadUrl = params.get("loadUrl");
|
|
|
|
URL url = fc.getExternalContext().getResource(loadUrl);
|
|
|
|
InputStream in = url.openStream();
|
|
//Do Stuff
|
|
return "result";
|
|
}
|
|
|
|
// GOOD: getResource constructed from `ExternalContext` with input validation
|
|
public String parameterActionGood1() throws IOException {
|
|
FacesContext fc = FacesContext.getCurrentInstance();
|
|
Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
|
|
String loadUrl = params.get("loadUrl");
|
|
|
|
if (loadUrl.equals("/public/crossdomain.xml")) {
|
|
URL url = fc.getExternalContext().getResource(loadUrl);
|
|
|
|
InputStream in = url.openStream();
|
|
//Do Stuff
|
|
return "result";
|
|
}
|
|
|
|
return "home";
|
|
}
|
|
}
|