使用ngSanitize允许一些html标签

时间:2014-12-15 13:35:16

标签: angularjs ngsanitize

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

  • 我想要一些html标签,例如<强大> (没有空格)工作。
  • 所有其他html应该显示为输入内容(即<应替换为& lt;等等)

我很确定我可以使用ngSanitize来做到这一点,但我无法弄清楚如何。

2 个答案:

答案 0 :(得分:3)

$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以适合您的目的。大多数人都不喜欢" hack core"以这种方式,但开源的全部意义在于能够做到这一点。这个模块变化不大,以至于在开发项目时很难保持相对最新。
  2. 与那里定义的列表一起使用。大多数情况下,您发现此列表实际上非常好,而且只是IMG或A HREF标签被破坏了。这不是因为标签已被过滤 - 因为这些标记是单独列入白名单的,您可以使用上述技术将特定网址接受到每个标记中作为" safe"

答案 1 :(得分:0)

顺便说一下,there is now a possibility