Commit Graph

8 Commits

Author SHA1 Message Date
lhk229 fa64bfb475 源图解码加尺寸/分配上限,堵住解压炸弹风险
两处在缩图前直接 image::load_from_memory:背景色过滤的参考图(请求体 data URL)
与阿里云抠图源图。缺省 image::Limits 无尺寸上限、仅 512MiB alloc 兜底,12MB 请求体
即可构造巨幅压缩图在解码阶段撑爆内存,逐帧动画并发时叠加。
改用带 Limits 的 ImageReader(边长 ≤8192、alloc ≤128MiB),与结果解码同口径。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 08:38:07 +00:00
lhk229 0dd34d1a65 抠图结果下载/解码加大小与尺寸上限,防止上游响应撑爆内存
response.bytes() 直接分配任意大小响应,作为 BgFilter 降级路径且逐帧动画可并发多次
调用,异常/恶意上游会造成 API 进程内存压力。复用 BgFilter 路径的做法:
- 下载:先按 Content-Length 拒绝,再流式 chunk 累加,超 32MB 立即中断
- 解码:ImageReader + Limits(边长 ≤8192、max_alloc 上限)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 07:56:37 +00:00
lhk229 cf7f75cb6f 脱敏 VIAPI 临时桶上传错误体,避免泄漏 STS 临时凭证
OSS 签名类错误(如 SignatureDoesNotMatch)会在错误体里回显 StringToSign
(含 x-oss-security-token 明文)、StringToSignBytes(十六进制)和 SignatureProvided。
原实现把该错误体裸拼进 MattingError 消息,随后经 aliyun_matting 进入
external_api_call_failure 审计的 errorMessage/rawExcerpt 与 OTLP 日志,
泄漏 STS 临时凭证。

- 上传非 2xx 分支改用 sanitize_oss_upload_error_body:剥掉 StringToSign /
  StringToSignBytes / SignatureProvided 三个元素,并把已知 security_token
  在正文任何位置的出现替换为 ***,保留 <Code> 供诊断后再记录。
- 新增 redact_xml_element(无正则依赖)与单测覆盖脱敏效果。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 02:49:30 +00:00
lhk229 1aaf075724 阿里云抠图输入按格式/大小/分辨率限制归一化
原实现只按边长缩放,未缩放时直接上传原始 bytes 却固定声明 image/png:
小尺寸大体积 PNG、JPEG/WebP 原图、或异常位深 PNG 可能被上游 4xx 拒绝,
静默降级到低质量本地扣色。按阿里云 SegmentCommonImage 输入限制归一化:

- 格式:统一 to_rgba8 + encode_rgba_png,永远产出 8 位 RGBA PNG,消除 MIME
  名不副实与 8/16/64 位 PNG / 非 PNG 不受支持的问题。
- 大小:MAX_INPUT_BYTES=3MB,编码后超限则等比降尺寸重编码,直到达标。
- 分辨率:最长边 ≤1999 保留;新增每边 >32 的短路,过小图直接 InvalidRequest
  让调用方走本地兜底,省一次注定 4xx 的往返。
- URL:object 叶子名 ASCII 过滤,保证 ImageURL 不含中文/非 ASCII。
- 抽出 normalize_matting_input_png(_within),alpha 上采样按实际上传尺寸是否
  变化判定(覆盖边长缩 + 体积缩两种情况),补 3 个单测。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 13:50:55 +00:00
lhk229 e796cefe9f 脱敏阿里云抠图结果下载错误
避免临时 OSS 签名 URL 进入日志和审计 metadata

补充结果下载错误脱敏单测
2026-07-09 13:02:29 +00:00
lhk229 a2b64290a1 删除抠图上海自有 OSS 死分支并清理审查发现的死代码
代码审查发现 4 项问题,本次一并处理:

- 抠图输入"上海地域自有 OSS 上传"分支整体删除:我们没有上海地域
  OSS,region marker 判定永远为假,该分支任何环境都不会触发,且其
  matting-input/ 中间对象无清理会造成存储泄漏(若将来启用)。抠图
  输入统一走 VIAPI 官方临时桶(1 天自动过期,天然无泄漏)。
- platform-matting:segment_image_to_transparent_png 去掉恒为 None
  的 accessible_url 参数,简化提交分支;修正"生产建议用上海自有
  OSS"的误导注释。
- editor_green_screen:删除不可达的 #00FF00 绿幕特判分支(legacy
  绿幕色产生点已删、调色板无此色)。
- segment_smoke example:默认参数里的个人路径改为用法提示 + 退出。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 04:32:11 +00:00
lhk229 c53d6ffef0 移除一次性的抠图尺寸探针示例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 04:03:10 +00:00
lhk229 d0412705c4 新增阿里云通用抠图链路,图片抠图升级三档降级
- 新增 platform-matting crate:手搓 SegmentCommonImage ACS3 签名调用、
  VIAPI 临时桶上传、分辨率守卫(缩图送抠 + alpha 回贴原图)
- api-server 接入 GENARRATIVE_ALIYUN_MATTING_* 配置与 MattingClient
- 画布生成图片抠图链改为 BgFilter → 阿里云 → 本地键色三档降级

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 03:50:32 +00:00