Я использую 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.