首页 > 解决方案 > 你通常如何过滤json xss?

问题描述

我写了以下代码。

String body = IOUtils.toString(requestWrapper.getReader());

JSONParser parser = new JSONParser();
Object object = parser.parse(body);

object = clean(object);
body = object.toString();
requestWrapper.resetInputStream(body.getBytes());
private Object clean(Object object) {

        if (object instanceof JSONArray) {
            JSONArray jsonArray = (JSONArray) object;
            for (int i = 0; i < jsonArray.size(); i++) {
                jsonArray.set(i, clean(jsonArray.get(i)));
            }
            return jsonArray;

        } else if (object instanceof JSONObject) {
            JSONObject jsonObject = (JSONObject) object;
            for (Object o : jsonObject.keySet()) {
                jsonObject.put(o, clean(((JSONObject) object).get(o)));
            }
            return jsonObject;
        } else if (Objects.nonNull(object)){

            return object.toString().replace("<", "&lt;").replace(">", "&gt;");

        } else {
            return null;
        }

}

这似乎工作正常。但我不知道这是否正确。像这样实现代码很可能会导致数据丢失。

标签: javaspring-bootfilterxss

解决方案


推荐阅读