首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ngSanitize保留<script>标记

ngSanitize保留<script>标记
EN

Stack Overflow用户
提问于 2018-09-07 19:32:20
回答 1查看 98关注 0票数 0

我想把这个-

<b>Hello</b> World, <script>alert("xss")</script>

作为-

Hello World,警报(“xss”)

当前使用ngSanitize并使用ng-bind-html时,它呈现为

Hello World,

我不想完全剥离脚本标记,但不想以html的形式执行它(同时执行安全的html)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-08 07:00:58

这是设计造成的不可能。您不能装饰ngSanitize以接受<script>标记。如果您查看其他需要特殊或扩展的ngSanitize功能的指令,它们会提供自己的替换。例如,text-angular

警告,你自己承担风险!

如果您确实需要接受<script>标记和可运行的JS,请打开angular-sanitize.js文件并查找

代码语言:javascript
复制
var blockedElements = toMap('script,style');

在第268行的v1.6.9。代之以

代码语言:javascript
复制
var blockedElements = toMap('style');

现在必须将script添加到内联元素列表中,在第255行的v1.6.9中

代码语言:javascript
复制
var inlineElements = extend({}, optionalEndTagInlineElements, toMap('a,abbr,acronym,b,script,' + ...

最后,您必须避免将({这样的字符转换为十六进制实体。查找第478号线周围的function encodeEntities(value) {,注释掉

代码语言:javascript
复制
/*
replace(NON_ALPHANUMERIC_REGEXP, function(value) {
  return '&#' + value.charCodeAt(0) + ';';
}).
*/ 

现在,<b>Hello</b> World, <script>alert("xss")</script>将被接受,alert("xss")将在页面加载时被触发。

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

https://stackoverflow.com/questions/52228625

复制
相关文章

相似问题

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