gpt4 book ai didi

java - 使用 SafeHtml 的 anchor

转载 作者:行者123 更新时间:2023-11-30 09:29:36 24 4
gpt4 key购买 nike

您将如何结合链接使用 SafeHtml?

场景:我们的用户可以输入未格式化的文本,其中可能包含链接,例如I like&love http://www.stackoverflow.com .我们希望在 GWT 中安全地呈现此文本,但使链接可点击,例如I like&amp;love <a="http://www.stackoverflow.com">stackoverflow.com</a> .除了在 GWT 前端呈现文本,我们还想通过电子邮件发送它,其中的链接也应该是可点击的。

到目前为止,我们考虑了以下选项:

  1. 将完整的文本作为 HTML 存储在后端,让前端假定它已正确编码 (I like&amp;love <a="http://www.stackoverflow.com">stackoverflow.com</a>) -> 引入 XSS 漏洞
  2. 在后端存储纯文本但将链接存储为 HTML (I like&love <a="http://www.stackoverflow.com">stackoverflow.com</a>) 并使用 HtmlSanitizer在前端
  3. 在后端为链接 (I like&love [stackoverflow.com|http://www.stackoverflow.com]) 存储纯文本和特殊编码,并在前端使用自定义 SafeHtml 生成器

对我们来说,第三个选项看起来最干净,但它似乎需要最多的自定义代码,因为我们无法利用 GWT 的 SafeHtml 基础结构。

有人可以分享如何最好地解决这个问题吗?有没有我们到目前为止没有考虑的另一种选择?

最佳答案

为什么不完全按照用户输入的方式存储文本,并在转换输出时执行任何特殊处理(例如发送电子邮件、创建 PDF 等)。这是最自然的方法,您不必取消任何特殊处理,例如当您向用户提供编辑字符串时。

作为一般规则,我总是只对立即 传输/存储/输出目标执行编码/转义/转换。偏离这条规则的理由很少,其中之一可能是性能,例如在数据库中缓存转换后的值。 (在这些情况下,我认为最好为数据库字段指定一个特定的名称,例如“text_htmltransformed”——这样可以避免“过度转义”,这与不转义一样有害。)

注意:转义/编码不能替代输入验证。

关于java - 使用 SafeHtml 的 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13601858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com