使用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'] // 明确禁止的属性
  });

 

posted @ 2025-08-11 14:33  罗毅豪  阅读(48)  评论(0)    收藏  举报