【问题标题】:How to whitelist tags with Google's Caja HTML Sanitizer under node.js?如何在 node.js 下使用 Google 的 Caja HTML Sanitizer 将标签列入白名单?
【发布时间】:2013-08-04 17:45:23
【问题描述】:

我使用的是node.js下的npm包Caja-HTML-Sanitizer

我可以使用 sanitizer() 函数清理 html 输入,但是如何使用白名单来只允许某些标签(例如 p br strong)?

谢谢!

【问题讨论】:

    标签: javascript node.js xss google-caja


    【解决方案1】:

    那个包看起来不是最新的——实际的 sanitizer 文件至少有三年的历史(根据 git 时间戳)。我不建议使用该版本。

    不幸的是,目前没有任何参数可用于简单地提供备用白名单的 sanitizer。 (有一些原因可能会在未来发生变化,但这还没有发生。)

    • 修改内置白名单最直接的方法是获取Caja源码树,修改src/com/google/caja/lang/html/*-whitelist.json并重建($ ant); ant-lib/com/google/caja/plugin/html-sanitizer-bundle.js 中内置了与您找到的相同形式的消毒剂。

    • 您也可以直接使用标签策略自定义行为。不要调用sanitize(html),而是使用sanitizeWithPolicy

      var basicPolicy = html.makeTagPolicy();
      function customPolicy(tagName, attribs) {
          if (/* whatever additional condition you want */) {
              return basicPolicy(tagName, attribs);
          }
      }
      
      ...
      
      return html.sanitizeWithPolicy(input, customPolicy);
      

      但是,这需要您对所需的限制进行编程,而不是对现有数据使用现有的白名单逻辑。它对 sanitizer API 未来可能发生的变化也更加敏感。

    【讨论】:

      猜你喜欢
      • 2015-04-30
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 2021-10-30
      • 2016-07-16
      相关资源
      最近更新 更多