【发布时间】:2020-05-28 18:37:41
【问题描述】:
说来话长,我需要保护一些遗留代码免受 SQL 注入。准备好的陈述不是一种选择。
API 首先由 Jersey 处理,JSON 对象反序列化是 Jackon
所以,我想做的一件事是避开所有出现的'。所以当 Jackson/Jersey 从 API 反序列化查询参数时,只要看到',它就会用'' 替换它。这可能吗?
【问题讨论】:
说来话长,我需要保护一些遗留代码免受 SQL 注入。准备好的陈述不是一种选择。
API 首先由 Jersey 处理,JSON 对象反序列化是 Jackon
所以,我想做的一件事是避开所有出现的'。所以当 Jackson/Jersey 从 API 反序列化查询参数时,只要看到',它就会用'' 替换它。这可能吗?
【问题讨论】:
您是否尝试过使用自定义字符串反序列化器?
public class CustomStringDeserializer extends StdScalarDeserializer<String> {
protected CustomStringDeserializer() {
super(String.class);
}
@Override
public String deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException {
String originalValue = parser.getValueAsString();
String escapedValue = null;
if (originalValue != null) {
escapedValue = originalValue.replace("'", "''");
}
return escapedValue;
}
}
【讨论】: