java代码过滤xss 封装json方法
时间: 2023-08-13 11:31:58 浏览: 189
SpringBoot +esapi 实现防止xss攻击 实战代码
在Java开发中,我们经常需要将Java对象转换为JSON格式的字符串,并在网络传输或存储时使用。为了防止XSS攻击,我们可以在转换JSON字符串时对字符串中的特殊字符进行过滤。
下面是一个封装了XSS过滤的JSON工具类示例:
```java
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
public class XssJsonUtils {
private static final ObjectMapper objectMapper = new ObjectMapper()
.enable(SerializationFeature.INDENT_OUTPUT);
/**
* 将Java对象转换为JSON字符串并进行XSS过滤
* @param obj Java对象
* @return 过滤后的JSON字符串
*/
public static String toJson(Object obj) throws JsonProcessingException {
String json = objectMapper.writeValueAsString(obj);
return xssFilter(json);
}
/**
* 对输入字符串进行XSS过滤
* @param input 输入字符串
* @return 过滤后的字符串
*/
public static String xssFilter(String input) {
if (input == null || input.isEmpty()) {
return input;
}
return Jsoup.clean(input, Whitelist.basic());
}
}
```
在上述代码中,我们封装了一个XssJsonUtils类,提供了toJson()方法用于将Java对象转换为JSON字符串,并在转换时进行XSS过滤。具体实现中,我们使用了Jackson库将Java对象转换为JSON字符串,然后对字符串中的特殊字符进行了过滤。
使用时,只需要在需要将Java对象转换为JSON字符串的地方调用XssJsonUtils.toJson()方法即可。例如:
```java
import java.util.HashMap;
import java.util.Map;
public class MyController {
@GetMapping("/data")
public String getData() throws JsonProcessingException {
Map<String, Object> data = new HashMap<>();
data.put("name", "<script>alert('hello')</script>");
data.put("age", 20);
return XssJsonUtils.toJson(data);
}
}
```
在上述代码中,我们将一个包含特殊字符的Map对象转换为JSON字符串,并在转换时进行了XSS过滤,可以防止XSS攻击。
阅读全文