我正在使用Spring boot并使用Jackson进行json解析。 为了清理JSON,我使用OWASP Json Sanitizer。
我的代码:
@RequestMapping("/aaa")
public String abcd() {
Dummy d1 = new Dummy();
d1.setA(10);
d1.setB("aaa");
d1.setC("<script>alert(111)</script>");
ObjectMapper mapper = new ObjectMapper();
try {
String json = mapper.writeValueAsString(d1);
JsonFactory f = new JsonFactory();
JsonParser jsonParser = f.createJsonParser(json1);
JsonNode node = mapper.readTree(jsonParser);
String oldJson = node.toString();
String updateJson = JsonSanitizer.sanitize(node.toString());
JsonNode node1 = mapper.readTree(updateJson);
System.out.println("Node === ");
System.out.println(node1);
System.out.println("JSON === ");
System.out.println(updateJson);
System.out.println("===============");
Dummy x = mapper.readValue(updateJson, Dummy.class);
System.out.println(x.getC());
return x.getC();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Inside ctcg");
e.printStackTrace();
}
System.out.println("=== Now me here");
return "aa";
}
我面临的问题是: updateJson 变量已清除。
{"c":"<script>alert(111)<\/script>"}
但是当我做
System.out.println(x.getC());
它再次显示<script>alert(111)</script>
而不是<script>alert(111)<\/script>
我想念什么?我希望它逃脱。为XSS做。