【发布时间】:2010-02-25 11:28:16
【问题描述】:
我正在研究我的 Java 应用程序中的一些 XSS 预防措施。
我目前有自定义构建的例程,这些例程将转义存储在数据库中的任何 HTML,以便在我的 jsps 中安全显示。但是,如果可能的话,我宁愿使用内置/标准方法来做到这一点。
我目前没有对发送到数据库的数据进行编码,但我也想开始这样做。
是否有任何内置方法可以帮助我实现这一目标?
【问题讨论】:
-
请注意,下面接受的答案是一种不完整且幼稚的方法。
Encoding the "big 5" serves exactly the purpose it was designed for: prevents injecting HTML markup with illegal characters inside tags and attribute values. However it does not prevent more elaborate injections, does not help with "out of range characters = question marks" when outputting Strings to Writers with single byte encodings, nor prevents character reinterpretation when user switches browser encoding over displayed pageowasp.org/index.php/How_to_perform_HTML_entity_encoding_in_Java -
您不会说接受的答案通常是正确的,只是在转义 HTML 时需要考虑更大范围的字符?
-
锁好门很好,但最好不要让窗户大开。这是危险的建议。
-
转义不是解决方案,特别是如果您希望用户通过 tiny mc 等富文本编辑器输入 HTML 子集。