一尘不染

Java 5 HTML转义以防止XSS

jsp

我正在研究Java应用程序中的一些XSS预防措施。

我目前有自定义的例程,这些例程将转义数据库中存储的任何HTML,以便在jsps中安全显示。但是,如果可能的话,我宁愿使用内置/标准方法来执行此操作。

我目前不编码要发送到数据库的数据,但也想开始这样做。

是否有任何内置方法可以帮助我实现这一目标?


阅读 641

收藏
2020-06-08

共1个答案

一尘不染

通常,在 显示 过程中而不是在 存储 过程中会逃避XSS
。在JSP中,您可以为此使用JSTL标签(只需将jstl-1.2.jar放在其中/WEB- INF/lib)。例如<c:out>fn:escapeXml

<input name="foo" value="<c:out value="${param.foo}" />">

要么

<input name="foo" value="${fn:escapeXml(param.foo)}">

而已。如果在处理输入和/或存储在数据库中时也这样做,那么它们全都分布在业务代码和/或数据库中。您不应该这样做,这仅是维护方面的麻烦,当您在不同的地方进行操作时,您将冒着两次转义符或更多风险的风险(例如,&将变为&amp;amp;&amp;以使最终用户从字面上看到&amp;而不是&在视图中。代码和数据库不是为XSS敏感。只有看法是,那么你应该逃避它只是
在那里

我只提醒你:你 不是 需要逃离它的servlet /过滤/ javacode
/数据库/不管。您只是不必要地使事情复杂化了。只是在显示过程中将其转义即可。就这样。

2020-06-08