You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Isomorphic Dompurify.sanitize() 丢失请求体,如何保留请求体内容?

解决isomorphic-dompurify过滤请求体的问题

isomorphic-dompurify本质是为清理HTML/XML类危险内容设计的,它的sanitize()方法并不适合直接传入完整的请求对象——当你把包含请求头、请求体的复杂JS对象丢进去时,它会按照DOM节点规则解析过滤,自然会丢弃掉它认为非“安全DOM结构”的请求体内容。

要保留请求体,正确的做法是拆分处理请求中的用户输入部分,而非把整个请求对象塞进sanitize():

  • 只对请求头、请求体中来自用户的字符串内容单独调用sanitize(),不要处理整个对象。
  • 如果请求体是JSON结构,遍历其中每个字符串字段,对字段值做sanitize后再重组对象;如果是表单格式,逐个处理表单字段。

举个Node.js环境的示例:

const DOMPurify = require('isomorphic-dompurify');

// 假设这是你的请求对象
const request = {
  headers: { 'user-agent': '<script>alert("xss")</script>' },
  body: { username: '<b>test</b>', content: '<img src=x onerror=alert(1)>' }
};

// 正确处理方式:单独清理每个用户输入字段
const sanitizedRequest = {
  headers: {
    ...request.headers,
    'user-agent': DOMPurify.sanitize(request.headers['user-agent'])
  },
  body: {
    username: DOMPurify.sanitize(request.body.username),
    content: DOMPurify.sanitize(request.body.content)
  }
};

这样既完成了危险内容的清理,又能完整保留请求头和请求体的结构与内容。

内容的提问来源于stack exchange,提问作者mik32

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:15:39