Files
FamilyBook/uploads/.htaccess
T

40 lines
1.5 KiB
ApacheConf
Raw Normal View History

# 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)$)">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</FilesMatch>