由于消息中的消息属性文件:HTML标记占位符 - XSS潜在
message = Change relation <strong>{0}</strong> -> <strong>{1}</strong> to <strong>{2}</strong> -> <strong>{3}</strong>?
如果任何占位符的内容是用户的影响字符串,我需要到html为了防止潜在的XSS(我通过在我的JSP模板中使用c:out
标记来做到这一点,我想我也可以使用spring:message
标记的htmlEscape属性,但我认为没有区别)。
但是通过这样做,我在邮件中标记损坏,从而导致输出<strong>
等:
Change relation <strong>Peter</strong> -> <strong>Car</strong> to <strong>Carl</strong> -> <strong>Bus</strong>?
我已经读线程这里on stackoverflow但它并没有解决XSS 。
我正在考虑这些选项:
1)只需从信息的属性替换所有<strong>
标签用单引号文件。那么html转义整个消息就没有问题了,但是消息的特定部分略显突出。
2)将消息拆分为允许(JSP)模板中单独标记的部分。为了获得正确的标记,这感觉很像工作。
我在这里错过了什么吗?哪种方法更好,还是有其他选择?
编辑:没有HTML转义的消息是,就像我希望它是这样的:
变化关系彼得 - >汽车到卡尔 - >总线?
因此,message.properties文件中的html标记正在呈现在模板中时呈现。
当转义时,消息如上所示,向我显示<strong>
标记而不是呈现它们。
你是说它会导致输出:'<强>彼得< /强>'?就我所知,因为你的“损坏的”例子与原始信息完全一样。 – Gray
嗨,对不起,我编辑了我的问题,试图澄清我的情况一些。 – SebastianRiemer
谢谢澄清。如果您查看HTML(查看源代码),您会发现实际上,您将“<”发送给客户端而不是“<”。所以,我相信我的答案仍然存在 - 让我知道如果它不清楚或者我误解了你的问题。 – Gray