Apache Commons Text StringEscapeUtils 与 JSoup 预防 XSS?

问题描述 投票:0回答:2

我想清理用户输入以帮助防止 XSS 攻击,我们不一定关心 HTML 白名单,因为我们的用户不需要发布任何 HTML / CSS。

看看现有的替代方案,哪个会更好? Apache Commons Text 的 StringEscapeUtilsJSoup Cleaner

更新:

在为 JSoup 和 Apache Commons Text 编写一些单元测试后,我选择了 JSoup。

我喜欢 JSoup 不会弄乱单引号(即“Alan's mom”没有改变,而 Apache Commons Text 将其变成“Alan's mom”)。

白名单根本不是问题。它不需要任何配置,相反,它们包含一些内置选项,如果我们选择允许某些 HTML 标签子集,这些选项可能会派上用场。

java xss apache-commons jsoup html-escape-characters
2个回答
0
投票

“更好”?我认为这并不重要。 Cleaner 有一个 Whitelist.none(),escape utils 会转义所有内容。

这取决于您希望如何呈现“已清理”的输入:您只需要文本节点,还是希望显示转义的 HTML?


0
投票

我很想看到 Cuga 的测试用例,因为如果您在 2.6 中使用 Apache Commons escapeHtml 或在 3+ 中使用 escapeHtml4,它不会添加斜杠。它只是将字符转换为 HTML 实体,文档中对此有明确说明。

我什至有一个公开的例子来测试这一点:

https://gist.github.com/croucha/2e2925264890886cbf4d

所以请证明我错了,否则你关于转义添加斜杠的部分是错误的。如果您想仍然显示这些不安全字符但避免在浏览器内执行,那么您最好的选择是 Apache commons。据我所知,Jsoup 完全省略了字符,包括内容,即使它是安全的。

© www.soinside.com 2019 - 2024. All rights reserved.