首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许使用ngSanitize的某些样式属性

允许使用ngSanitize的某些样式属性
EN

Stack Overflow用户
提问于 2014-09-15 09:42:21
回答 2查看 7K关注 0票数 18

我正在使用ngSanitize在AngularJS应用程序中删除不需要的或危险的部分。但是,内容是使用HTML编辑器生成的,并包含一些样式信息,这些信息会被删除(例如,文本颜色)。

我知道删除内联CSS样式是有用的,但是我更喜欢带有CSS属性的白名单,这些属性不会被删除。有没有一种在不授予所有CSS属性的情况下实现这一目标的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-01 19:28:58

阅读ngSanitize的文档后,它似乎使用了两个白名单来确定要阻止的数据($compileProvider)。

这两个白名单是aHrefSanitizationWhitelist([regexp])imgSrcSanitizationWhitelist([regexp])。然而,看起来这两个只处理链接的URL,以防止XSS攻击。

您可以使用sce.trustAsHtml() (如果这仍然是件事,也可以使用data-bind-html-unsafe,但我认为这是不可取的),但这并不完全是您想要的;这将使您对所有的HTML开放,安全或不安全。

去看看$sce也许是值得的。到目前为止,可以选择转义CSS,但我不确定它是否会在HTML标记中转义内联CSS。到目前为止,我没有看到为parseAs方法提供白名单的选项。

编辑:

$sanitize source code中可以看出,它似乎被设置为允许样式标记中的内容,而不是样式属性。除非您更改源代码,否则样式属性将被清理掉。然而,类不会被剥离,所以您可能有一个解决办法。(实际上,通过允许类而不是内联样式,您可以在注释部分限制样式的使用。)

唯一的其他选择是你自己,似乎,除非有人已经这样做。

票数 14
EN

Stack Overflow用户

发布于 2015-04-20 21:28:53

textAngular的人有一个纳克消毒叉,这将允许样式属性。用他们的版本代替消毒。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25845061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档