我将使用Jackson Mapper在Spring MVC中转义HTML以避免XSS攻击。
我寻找逃避与杰克逊单独和如何在春季配置杰克逊。
我试图出口JSON包含“<”“>文本”,我希望他们逃脱<
和>
比如我加了附带一些文本“粗体标签” <b>
,我希望看到的是纯黑体标记文本在前端html中,但最终在前端HTML页面中以粗体显示文本。使用Spring MVC和Jackson Mapper进行HTML转义
下面是我的做法,我不知道为什么它没有解决。
任何人都可以帮忙吗?
在此先感谢!
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
this.getJsonFactory().setCharacterEscapes(new CustomCharacterEscapes());
}
}
public class CustomCharacterEscapes extends CharacterEscapes {
private final int[] asciiEscapes;
public CustomCharacterEscapes() {
int[] esc = CharacterEscapes.standardAsciiEscapesForJSON();
esc['<'] = CharacterEscapes.ESCAPE_STANDARD;
esc['>'] = CharacterEscapes.ESCAPE_STANDARD;
esc['&'] = CharacterEscapes.ESCAPE_STANDARD;
esc['\''] = CharacterEscapes.ESCAPE_STANDARD;
asciiEscapes = esc;
}
@Override
public int[] getEscapeCodesForAscii() {
return asciiEscapes;
}
@Override
public SerializableString getEscapeSequence(int ch) {
return null;
}
}
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<array>
<bean id="jsonConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper">
<bean class="x.y.z.CustomObjectMapper" />
</property>
</bean>
</array>
</property>
</bean>
首先几个一般意见...我会建议重新访问您的标点符号。我很清楚,这个网站上的很多人不会说土着英语,但是你的发帖是一个巨大的启动语句。为了了解每个陈述的结尾,我必须阅读它三次。另外,将你的代码分成两个独立的块。该网站认为Java代码是XML,因为你把它们全部弄混了。这样我们可以看到一些语法突出显示。 – CodeChimp 2013-02-28 13:29:58
一般性评论不谈,你能解释一下你准备做什么吗?如果我能听到我读到的东西,这听起来像你试图返回HTML,但使用MappingJacksonHttpMessageConverter转换一些特殊字符?你为什么使用MappingJacksonHttpMessageConverter呢?你为什么要转换这些角色?或者,你是否说你在JSON响应中返回HTML,默认情况下生成的JSON不正确,因为它不会转换字符或将它们恰当地对齐? – CodeChimp 2013-02-28 13:33:06
我已编辑我的帖子,我是一个相当新手,以stackoverflow,感谢您的建议@CodeChimp。 – 2013-03-01 02:28:59