使用DOMPurify防止存储型XSS
需求:使用burp抓包,可以看到富文本编辑器中图片是以base64形式在img标签内的,那就可以添加onclick=alert(1)来注入xss代码。
这样用户在点击图片时就会触发xss代码,进行弹窗。若通报发布,那所有的用户都可以查看到通报内容,如果攻击者恶意伪造弹窗内容进行钓鱼,用户可能会当真,造成严重危害。
解决方法:
1.引入DOMPurify
import DOMPurify from 'dompurify'; // 引入 DOMPurify
2.设置允许标签和属性,禁用标签和属性。
item.safeContent = DOMPurify.sanitize(item.blockDataObj.text || '', { ALLOWED_TAGS: ['p', 'br', 'strong', 'em', 'u', 'strike', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'li', 'blockquote', 'div', 'span', 'a', 'table', 'tr', 'td', 'th', 'thead', 'tbody', 'tfoot', 'caption', 'pre', 'code', 'hr', 'img',], ALLOWED_ATTR: ['href', 'target', 'title', 'class', 'style', 'src', 'alt'], FORBID_TAGS: ['script', 'iframe', 'object', 'embed', 'video', 'audio'], // 明确禁止的标签 FORBID_ATTR: ['onerror', 'onload', 'onclick', 'ondblclick', 'onmouseover', 'onmouseout', 'onkeydown', 'onkeyup', 'onkeypress'] // 明确禁止的属性 });

浙公网安备 33010602011771号