如何阻止TinyMCE删除包含JavaScript代码的a标签href属性
问题原因
TinyMCE 5.x版本默认开启了脚本类型URL的安全拦截规则,该规则独立于verify_html和extended_valid_elements配置,会默认移除所有href、src等属性中javascript:、vbscript:开头的脚本类链接,所以你之前的配置不会生效。
解决方法
在你的options配置项中新增allow_script_urls: true即可关闭该安全拦截规则,修改后的配置代码如下:
ngOnInit(): void { this.options = { extended_valid_elements: 'span[*],img[class,*],div[*],a[*]', verify_html: false, allow_script_urls: true, // 新增这一行配置 paste_auto_cleanup_on_paste: true, paste_convert_headers_to_strong: false, paste_strip_class_attributes: 'all', convert_urls: false, style_formats: this.styles, content_css: this.content_css, }; }
注意事项
- 开启该配置后富文本会允许插入任意脚本链接,存在XSS注入风险。如果你的富文本内容允许普通用户提交,建议上线前增加后端内容校验规则,只允许可信来源的脚本链接写入存储。
- 如果配置后仍未生效,可从两个方向排查:
- 检查是否引入了第三方TinyMCE过滤插件,或是项目内自定义了TinyMCE的内容预处理逻辑
- 检查Angular的安全消毒机制是否对绑定的富文本内容做了拦截,可通过
DomSanitizer对可信内容标记为bypassSecurityTrustHtml放行
内容的提问来源于stack exchange,提问作者netdjw
相关产品推荐
相关产品推荐

