English 中文(简体)
Java SonarQube:Error使用Java/io/PrintWriter.write(Ljava/lang/String;)V可能容易受到XSS的攻击
原标题:Java SonarQube: Error This use of java/io/PrintWriter.write(Ljava/lang/String;)V could be vulnerable to XSS

我在下面得到了这个错误。使用ResponseWriter时。我该如何解决?

try {
   unifiedResponse = testController.updateData(testRequest);
} catch (RestClientResponseException e) {
    try {
        PrintWriter writer = response.getWriter();
        response.setContentType(MediaType.TEXT_PLAIN);
        response.setStatus(e.getRawStatusCode());
        writer.print(e.getResponseBodyAsString());
    } catch (IOException ex) {
        throw new ServiceException("Cannot get update Password error response body", ex);
    }
}

错误:

This use of java/io/PrintWriter.write(Ljava/lang/String;)V could be vulnerable to XSS

我的输出是JSON,HTMLEscape和OWASP创建了错误的格式,这是我需要的。

{ 
    "message": "Here is a test message"
}

OWASP输出:

{"message":"Here is a test message (e.g. !@#$)."}

SonarQube规则:

我尝试了SonarQube的官方解决方案,但仍然出现错误https://rules.sonarsource.com/java/RSPEC-5131/

问题回答

XSS漏洞通常意味着从请求到响应的数据连接不中断。最简单的解决方案通常只是对来自请求的数据使用StringEscapeUtils.escapeHtml4这样的库。这将使得标签(所有XSS攻击的真正根源)将被转换为<;脚本%gt;其将在屏幕上呈现为脚本,但不会在浏览器中执行为脚本。希望这是有道理的。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签