From 754c25b477331f79995d9e237dc15f9a7a0bb7e5 Mon Sep 17 00:00:00 2001 From: duxingchen Date: Tue, 22 Sep 2026 13:44:17 +0800 Subject: [PATCH] =?UTF-8?q?fix(audit):=20qrcode=20=E8=B7=AF=E5=BE=84?= =?UTF-8?q?=E6=8E=92=E9=99=A4=E5=87=BA=E5=AE=A1=E8=AE=A1=E9=87=87=E9=9B=86?= =?UTF-8?q?=EF=BC=88=E4=B8=8E=20IRIS=20=E5=AE=9E=E4=BE=8B=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qrcode 端点刻意不加鉴权(前端走 引用,无法携带 Authorization 头), 而 /api/v1/products/qrcode/{sn} 命中 _TRACKED_READ_PREFIXES 里的 /api/v1/products 前缀、又不是 bare list,会被判成「查看详情」逐条留痕 —— 列表页一次渲染就并发 拉几十张图,审计日志会被塞满,真正有价值的操作反而被淹没。 该端点不含业务数据(只把调用方给的序列号渲染成二维码图片),排除掉没有审计 价值损失。IRIS 实例今日已做同样处理,此处对齐,避免两边行为不一致。 实测:二维码正常加载;审计中不再出现 qrcode 记录。 --- backend/app/core/audit_middleware.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/backend/app/core/audit_middleware.py b/backend/app/core/audit_middleware.py index f42f1b0..d310e52 100644 --- a/backend/app/core/audit_middleware.py +++ b/backend/app/core/audit_middleware.py @@ -56,7 +56,19 @@ _TRACKED_READ_PREFIXES = ( ) # 永久忽略的路径前缀 -_IGNORED_PREFIXES = ("/health", "/docs", "/redoc", "/openapi.json") +# +# 两类内容: +# 1. 探针与文档(/health、/docs…)—— 噪声没有审计价值 +# 2. 图片类端点(/api/v1/products/qrcode)—— 走 加载,且该端点 +# 刻意不加鉴权(见 endpoints/products.py 的说明)。路径命中 +# _TRACKED_READ_PREFIXES 的 /api/v1/products 前缀、又不是 bare list, +# 会被判成「查看详情」逐条留痕:一次列表页渲染就并发拉几十张图, +# 逐条留痕会把审计日志塞满,真正有价值的操作反而被淹没。 +# 它也不含业务数据(只把调用方给的序列号渲染成二维码图片)。 +_IGNORED_PREFIXES = ( + "/health", "/docs", "/redoc", "/openapi.json", + "/api/v1/products/qrcode", +) # 路径段 → 审计模块 _PATH_MODULE: dict[str, str] = {