curl -sI 'https://example.com/wp-content/uploads/2026/11/quote-903.png' | findstr /i "HTTP/ content-type"
find uploads -name 'quote-903*'

草稿里插了一张报价单截图,文章还没发布,把图片地址复制到无痕窗口直接能打开,目录扫描日志里已经有外部 IP 访问过这个文件名。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,uploads 目录默认对所有人可读,附件是否公开跟文章状态无关。草稿只是 wp_posts 里的一条记录,文件早就落到公开路径下,文件名规则又很好猜。

「uploads 直链泄露」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

处理上按这个顺序:敏感附件改存到 web 根目录之外,用带鉴权的脚本输出;给 uploads 关掉目录列表并加防盗链,至少挡住批量扫描;草稿里的图先打水印或裁掉敏感区域,别直接传原图;已泄露的换文件名并清理 CDN 缓存。

改完只确认一件事:无痕窗口访问该图片地址返回 403,正文里的图仍能正常显示。

作者 9823189