【问题标题】:3rd party lib vs simple function for encoding Html entities to prevent XSS, thoughts?3rd 方库与用于编码 Html 实体以防止 XSS 的简单函数,想法?
【发布时间】:2021-04-22 11:36:58
【问题描述】:

在我的一个应用程序和我从 GitHub 分叉的一些库中选择一种有效缓解 XSS 的方法时,我陷入了两难境地。事情是为了防止 XSS,我们需要做的就是转义/编码/清理(无论如何)DOM 中不受信任的字符串/输入。 我偶然发现了几个选项。

  1. 使用第 3 方库 - 但是,这个会极大地增加 LOC(代码行数)的大小(这里有点夸张,我知道那里有更轻的库)。我的意思是,我不想仅仅因为这件事而对我的 app/lib 产生另一个依赖,因为它并不是那么重要,除非它成为“你知道我的意思”的痛苦。我可能的候选人是“dompurify”、“xss”、“sanitize-html”。就个人而言,我会选择“dompurify”,因为它使用简单。但是“xss”呢?它比“dompurify”轻 1 kb,我可能需要仔细看看。
  2. 下一个更像是一种解决方法,即编写一个 hacky JavaScript 函数,可能就像这个 stackoverflow 链接中的那个,Native JavaScript or ES6 way to encode and decode HTML entities?

哪种方法更好,这个变通功能是否足以防止 XSS?还是我应该将全新的库添加到我的代码库中?

我知道这是一个幼稚的初学者级别的问题,但您仍然看到我不得不问...否则我的脑袋会爆炸...需要一些观点。 拜托..我很想听听你们的想法...... 喜欢这个平台。

【问题讨论】:

  • 究竟是什么您要插入到文档中?来自外部来源的 HTML 结构?还是纯文本?
  • 我正在尝试修复一些库中的一些 xss 问题,我正在为此做出贡献。在那种情况下,它基本上是来自代码本身的不受信任的输入。但对于网络应用,它只是用户输入。
  • 希望我想表达的意思很清楚

标签: javascript html typescript dom xss


【解决方案1】:

我不是安全专家,所以我认为最好在安全堆栈交换中提出问题。 我认为开源的 3rd 方消毒剂将是最佳选择,因为您不必维护它。或者您可以想出一个新的创造性解决方案,例如使用<iframe> 对其进行沙盒框架,然后检测存在的任何元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 2012-02-13
    • 2019-01-05
    • 2013-05-26
    相关资源
    最近更新 更多