angularjs - ngSanitize 不允许允许 id 属性

标签 angularjs ng-bind-html ngsanitize

我正在使用 ngBindHtml 显示来自(内部)CMS 的一些 HTML:

<span ng-bind-html="cmsHtml"></span>

HTML 包含带有 id 属性的链接:

"<a id='fsgPdfLink' href='http://blah/download.pdf' target='_blank'>Click here to download the PDF</a>"

但是,我注意到在将链接写入页面之前,id 属性已被 angular 删除,因此呈现的只是:

<a href='http://blah/download.pdf' target='_blank'>Click here to download the PDF</a>

查看 ngSanitize 模块的源代码,似乎由于某种原因 id 属性不在有效属性列表中:

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

  1. 不允许使用 id 属性的原因是什么?是否存在安全风险?
  2. 如果可能的话,我真的很想继续使用 ngBindHtml。是否有 API 可以将安全标签添加到 sanitizer 列表中?还是我必须自己编辑源代码才能添加此标签?

最佳答案

为了部分回答我自己的问题,似乎没有用于更改内置白名单的 API,如这个开放问题中所述:

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

关于angularjs - ngSanitize 不允许允许 id 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22979532/

相关文章:

javascript - 使用 Ajax 的 OAuth2 隐式授权

javascript - 如何安全地将 HTML 从模型绑定(bind)到 View

javascript - 如何使用 angularjs sanitize 安全地保留 html 颜色

angularjs - 如何解析 Angular.JS 中变量的 HTML 内容?

css - angularjs 绑定(bind) nbsp 实体在 IE 中不起作用

javascript - AngularJS html 绑定(bind)和 Chome 应用程序 CSP

javascript - 加载 JSON 并将其显示在我的 Angular 应用程序中的所有 View 上

javascript - 如何有条件地为 Angular JS 设置 ng-options?

javascript - 在页面上以模式打开页面 url(Facebook 照片 URL)