【问题标题】:Using ngSanitize to allow some html tags使用 ngSanitize 允许一些 html 标签
【发布时间】:2023-03-26 02:40:01
【问题描述】:

我想显示来自用户的不安全字符串。

  • 我希望像 (不带空格)这样的一些 html 标记能够正常工作。
  • 所有其他 html 都应像输入时一样显示(即

我很确定我可以使用 ngSanitize 来做到这一点,但我不知道怎么做。

【问题讨论】:

    标签: angularjs ngsanitize


    【解决方案1】:

    $compileProvider 允许您为 HREF 和 SRC URL 设置清理“白名单”:

    app.config(function($compileProvider) {
        var imgSrcSanitizationWhitelist = /^\s*(https?|ftp|file):|data:image\//;
        $compileProvider.imgSrcSanitizationWhitelist(imgSrcSanitizationWhitelist);
    });
    

    但是,“安全”标签的白名单是硬编码的,不能以同样的方式更改。您可以在源代码中查看列表:

    https://github.com/angular/angular.js/blob/master/src/ngSanitize/sanitize.js#L186

    有一个增强此功能的公开请求:

    https://github.com/angular/angular.js/issues/5900

    但它还没有完成(还)。

    与此同时,您有几个选择:

    1. “分叉”项目并调整 ngSanitize 以适合您的目的。大多数人不喜欢以这种方式“破解核心”,但开源的全部意义在于能够做这样的事情。此模块没有太大变化,因此在您开发项目时很难使其保持相对最新。
    2. 使用此处定义的列表。大多数时候你会发现这个列表其实还不错,只是 IMG 或 A HREF 标签坏了。这不是因为标签被过滤了 - 那是因为 THOSE 被单独列入白名单,您可以使用上述技术将特定 URL 接受到每个标签中作为“安全”。

    【讨论】:

    • 谢谢,很好的答案。一个后续问题:脚本在安全列表中。这怎么可能安全?
    【解决方案2】:

    顺便说一句,there is now a possibility

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多