我使用的是textangular,它使用angular-sanitize来解析html。
我正在尝试使用iframe标记嵌入视频,但是当textangular调用angular-sanitize到parsehtml时会删除这些视频。
我应该如何更改角度清理以允许iframe标签用于例如链接到youtube视频?
或者我应该如何在我的HTML中嵌入视频?
答案 0 :(得分:6)
这就是我做到的。
textAngular使用单独的sanitize js文件textAngular-sanitize.min.js。
即使它被缩小,打开它,你会发现标签组;寻找这个:
A=b.extend({},x,e("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul"))
只需添加iframe标记
即可A=b.extend({},x,e("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,map,menu,nav,ol,pre,script,section,table,ul"))
我保持按字母顺序排列。
这使得它安全",问题解决了。
答案 1 :(得分:1)
一个选项可能是在您清理文本之前更改文本,然后再将其更改回来。类似的东西:
var text = 'some text <iframe></iframe> some more text';
text = text.replace('<iframe', '[[iframe');
text = text.replace('</iframe>', '[[/iframe]]');
text = sanitize(text);
text = text.replace('[[iframe', '<iframe');
text = text.replace('[[/iframe]]', '</iframe>');
但是,通过这样做,您可以在使用iframe嵌入YouTube视频时自行开放攻击。您应该做的是提出一些内部BBCode,您可以在打印之前将其替换掉。也就是说,在您对其进行清理后,您可以让用户传递[youtube video_id=ZZZ]
替换为iframe的内容。