Astro SSR场景下是否需保留DOMPurify的sanitize函数?
必须保留XSS防护,不能直接移除DOMPurify的sanitize功能
- 别觉得只有少数人能输入就安全,哪怕是内部可信人员,也可能误粘贴带恶意脚本的内容,或者账号被盗用。一旦未净化的HTML内容展示给所有访客,瞬间就会引发XSS攻击,风险完全不可控。
- Astro SSR下没法直接用客户端版DOMPurify?换服务端处理就行:
- 方案一:在内容入库前就用后端(比如Node.js环境)的DOMPurify做净化,前端渲染时直接用处理后的内容,不用再在页面里处理。
- 方案二:在Astro的SSR页面组件里,搭配jsdom在服务端完成净化,示例代码:
--- import DOMPurify from 'dompurify'; import { JSDOM } from 'jsdom'; const dom = new JSDOM(''); const purify = DOMPurify(dom.window); const sanitizedDesc = purify.sanitize(description); --- <div class='mb-6 px-4' set:html={sanitizedDesc} />
- 绝对不能直接去掉sanitize就渲染原始HTML,哪怕只有一次疏漏,所有访客都会暴露在攻击风险里,这是网页安全的底线。
内容的提问来源于stack exchange,提问作者Yush Shrestha
相关产品推荐
相关产品推荐

