From 931edc3025a4c4822ab51ca02d420b638cf89d75 Mon Sep 17 00:00:00 2001 From: iven Date: Thu, 30 Apr 2026 10:21:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(security):=20=E8=A1=A5=E5=85=A8=20XSS=20san?= =?UTF-8?q?itize=20+=20=E4=BF=AE=E5=A4=8D=20sender=5Fid=20=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD=E4=BC=AA=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 安全审计修复: - 补全 6 个 DTO 的 sanitize 方法(diagnosis/consent/alert/medication_record/medication_reminder/follow_up_template) - 4 个 handler 添加 .sanitize() 调用(diagnosis/consent/alert_rule/medication_record) - 修复咨询消息 sender_id/sender_role 从客户端提交改为服务端从 JWT 提取 - 修复小程序 AI 报告 markdownToHtml XSS(添加 sanitizeHtml 过滤) --- .../src/pages/ai-report/detail/index.tsx | 20 ++++++- apps/web/src/api/health/consultations.ts | 2 - crates/erp-health/src/dto/alert_dto.rs | 15 +++++ crates/erp-health/src/dto/consent_dto.rs | 17 ++++++ crates/erp-health/src/dto/consultation_dto.rs | 3 +- crates/erp-health/src/dto/diagnosis_dto.rs | 21 +++++++ .../src/dto/follow_up_template_dto.rs | 26 ++++++-- .../src/dto/medication_record_dto.rs | 59 ++++++------------- .../src/dto/medication_reminder_dto.rs | 17 +++--- .../src/handler/alert_rule_handler.rs | 6 +- .../erp-health/src/handler/consent_handler.rs | 10 +++- .../src/handler/consultation_handler.rs | 6 +- .../src/handler/diagnosis_handler.rs | 6 +- .../src/handler/medication_record_handler.rs | 16 +++-- .../src/service/consultation_service.rs | 13 ++-- 15 files changed, 154 insertions(+), 83 deletions(-) diff --git a/apps/miniprogram/src/pages/ai-report/detail/index.tsx b/apps/miniprogram/src/pages/ai-report/detail/index.tsx index 1e86e27..a041574 100644 --- a/apps/miniprogram/src/pages/ai-report/detail/index.tsx +++ b/apps/miniprogram/src/pages/ai-report/detail/index.tsx @@ -12,8 +12,26 @@ const TYPE_LABELS: Record = { report_summary_generation: '报告摘要', }; +/** 移除危险的 HTML 标签和事件属性,防止 XSS */ +function sanitizeHtml(html: string): string { + return html + // 移除