fix(audit): qrcode 路径排除出审计采集(与 IRIS 实例对齐)

qrcode 端点刻意不加鉴权(前端走 <img src> 引用,无法携带 Authorization 头),
而 /api/v1/products/qrcode/{sn} 命中 _TRACKED_READ_PREFIXES 里的 /api/v1/products
前缀、又不是 bare list,会被判成「查看详情」逐条留痕 —— 列表页一次渲染就并发
拉几十张图,审计日志会被塞满,真正有价值的操作反而被淹没。

该端点不含业务数据(只把调用方给的序列号渲染成二维码图片),排除掉没有审计
价值损失。IRIS 实例今日已做同样处理,此处对齐,避免两边行为不一致。

实测:二维码正常加载;审计中不再出现 qrcode 记录。
This commit is contained in:
2026-09-22 13:44:17 +08:00
parent 24a15126d0
commit 754c25b477

View File

@ -56,7 +56,19 @@ _TRACKED_READ_PREFIXES = (
)
# 永久忽略的路径前缀
_IGNORED_PREFIXES = ("/health", "/docs", "/redoc", "/openapi.json")
#
# 两类内容:
# 1. 探针与文档(/health、/docs…—— 噪声没有审计价值
# 2. 图片类端点(/api/v1/products/qrcode—— 走 <img src> 加载,且该端点
# 刻意不加鉴权(见 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] = {