在 FastAdmin 框架中,限制访问 public/assets/libs 目录下的特定文件(如 HTML 文件),最安全、高效的做法是直接在 Web 服务器层(Nginx 或 Apache)进行拦截配置。这比通过 PHP 路由处理性能更好,也能避免不必要的请求进入框架。
以下是针对不同服务器的具体配置方法:
方案一:使用 Nginx(推荐)
如果您使用的是 Nginx,可以在站点的配置文件(或在宝塔面板的"伪静态/配置文件"中)添加以下规则。该规则会匹配 assets/libs 目录下所有以 .html 结尾的请求,并直接返回 403 Forbidden:
location ~* ^/assets/libs/.*\.html$ {
deny all;
}
说明:~* 表示不区分大小写的正则匹配,确保无论后缀是 .html 还是 .HTML 都会被拦截。
方案二:使用 Apache
如果您的环境是 Apache,可以在项目的 public/.htaccess 文件中添加以下代码来实现拦截:
<FilesMatch "\.html$">
# 仅针对 assets/libs 目录生效
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
</IfModule>
</FilesMatch>
或者更精确地限制路径:
RewriteEngine On
RewriteRule ^assets/libs/.*\.html$ - [F,L]
(注:[F,L] 中的 F 代表返回 403 Forbidden,L 代表停止后续重写规则)
⚠️ 补充安全建议
根据 FastAdmin 的安全规范,除了限制 HTML 文件的访问外,还强烈建议您注意以下几点:
- 禁止脚本执行 :务必确保
uploads和assets等公开可写目录没有 PHP 脚本的执行权限 。例如在 Nginx 中应配置location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ { deny all; },以防止恶意脚本被上传并执行。 - 强制下载而非预览 :对于可能包含敏感信息的文本类文件(如 txt、pdf 等),建议在服务器配置中添加
Content-Disposition: attachment响应头,强制浏览器下载而不是在线渲染,防止 XSS 攻击。