2026-09-30 09:44:55 +08:00
|
|
|
|
# uploads/ —— 整个目录**禁止 Web 直接访问**。
|
|
|
|
|
|
#
|
|
|
|
|
|
# 为什么从"只禁脚本"升级成"全禁":
|
|
|
|
|
|
# 原本只挡了 .php 之类的可执行扩展名,其余文件(头像、附件、以及
|
|
|
|
|
|
# 历史遗留的 *.{sql,txt,log,zip} 之类)都能被**任何人**按地址直接下载 ——
|
|
|
|
|
|
# 只要文件名泄出去(分享过链接、日志里出现过、被爬过),就等于公开。
|
|
|
|
|
|
# 排查这类事故时还会遇到"备份文件其实是原样吐出的源码"那种更糟的情况。
|
|
|
|
|
|
#
|
|
|
|
|
|
# 现在所有附件一律经 media.php 代理出去:
|
|
|
|
|
|
# · 是否可见由**登录态**决定,而不是"知道文件名";
|
|
|
|
|
|
# · 云端桶也可设成私有,不必为了显示图片开公共读。
|
|
|
|
|
|
#
|
|
|
|
|
|
# ⚠️ 这条规则不是"多一道保险"而是"唯一的门"—— media.php 读文件走的是
|
|
|
|
|
|
# 文件系统(PHP 进程),不受 .htaccess 影响,所以功能不会因此受损。
|
|
|
|
|
|
# 若哪天发现图片不显示,先看 media.php 有没有报错,别急着重开直连。
|
|
|
|
|
|
|
|
|
|
|
|
# Apache 2.4
|
|
|
|
|
|
<IfModule mod_authz_core.c>
|
|
|
|
|
|
Require all denied
|
|
|
|
|
|
</IfModule>
|
|
|
|
|
|
# Apache 2.2
|
|
|
|
|
|
<IfModule !mod_authz_core.c>
|
|
|
|
|
|
Order allow,deny
|
|
|
|
|
|
Deny from all
|
|
|
|
|
|
</IfModule>
|
|
|
|
|
|
|
|
|
|
|
|
# 关掉目录列表
|
|
|
|
|
|
Options -Indexes
|
|
|
|
|
|
|
|
|
|
|
|
# 顺带把可能的备份/临时文件也点名拒掉(防"规则文件被自己的副本绕过")
|
|
|
|
|
|
<FilesMatch "(^\.|~$|\.(bak|bak\.[0-9]+|old|orig|save|swp|tmp|log|sql|zip|tar|gz)$)">
|
2026-09-30 00:49:53 +08:00
|
|
|
|
<IfModule mod_authz_core.c>
|
|
|
|
|
|
Require all denied
|
|
|
|
|
|
</IfModule>
|
|
|
|
|
|
<IfModule !mod_authz_core.c>
|
|
|
|
|
|
Order allow,deny
|
|
|
|
|
|
Deny from all
|
|
|
|
|
|
</IfModule>
|
|
|
|
|
|
</FilesMatch>
|