【发布时间】:2020-12-18 18:42:59
【问题描述】:
我用Checkmarx工具扫描了一个java web项目,分析在一个响应JSON的web服务执行的方法中标记了一个XSS漏洞,漏洞在while((output = Encode.forJava(br.readLine())) != null) {这一行,具体在@987654322 @。
Checkmarx 说:
攻击者可以通过简单地更改返回的网页 在用户输入
readLine中提供修改后的数据,由NetClientPost方法。然后这个输入流经代码 直接到输出网页,无需消毒。 这可以启用反射跨站点脚本 (XSS) 攻击。
我尝试使用 OWASP for Java,实现方法Encode.forJava(),但漏洞继续出现在分析中。这是方法的实现:
public String NetClientPost (String urlSer, String param){
String result ="";
try {
InetAddress ip = InetAddress.getLocalHost();
String host = ip.getHostAddress();
doTrustToCertificates();
URL url = new URL(urlSer);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setConnectTimeout(2000);
String input = param;
String output = "";
try(OutputStream os = conn.getOutputStream()) {
os.write(input.getBytes());
os.flush();
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP code : " + conn.getResponseCode());
}
try (BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())))) {
while ((output = Encode.forJava(br.readLine())) != null) {//LINE OF CHECKMARX XSS
result += output;
}
}
}
conn.disconnect();
return result;
} catch (MalformedURLException e) {
return result;
} catch (IOException e) {
return result;
} catch (Exception e) {
return result;
}
}
有人知道如何解决这个问题吗?
【问题讨论】:
标签: java xss bufferedreader encoder checkmarx