我正在使用 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
- 不允许使用 id 属性的原因是什么?是否存在安全风险?
- 如果可能的话,我真的很想继续使用 ngBindHtml。是否有 API 可以将安全标签添加到 sanitizer 列表中?还是我必须自己编辑源代码才能添加此标签?
最佳答案
为了部分回答我自己的问题,似乎没有用于更改内置白名单的 API,如这个开放问题中所述:
关于angularjs - ngSanitize 不允许允许 id 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22979532/