fastadmin 如何限制访问public\assets\libs目录下面的所有html文件

在 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 文件的访问外,还强烈建议您注意以下几点:

  1. 禁止脚本执行 :务必确保 uploads 和 assets 等公开可写目录没有 PHP 脚本的执行权限 。例如在 Nginx 中应配置 location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ { deny all; },以防止恶意脚本被上传并执行。
  2. 强制下载而非预览 :对于可能包含敏感信息的文本类文件(如 txt、pdf 等),建议在服务器配置中添加 Content-Disposition: attachment 响应头,强制浏览器下载而不是在线渲染,防止 XSS 攻击。
相关推荐
唐青枫8 小时前
别把后续动作全塞进控制器:Symfony 事件监听器与订阅者实战
php·symfony
新鲜势力呀9 小时前
PHP 消息队列实战:从同步接口阻塞到 RabbitMQ + Redis队列 + 异步任务架构完整优化方案
redis·rabbitmq·php
新鲜势力呀11 小时前
PHP 日志系统实战:从排查线上故障困难到 ELK日志分析 + 链路追踪 + 实时监控完整架构方案
elk·架构·php
用户2986985301411 小时前
Python 中 HTML 转 PDF 的实现方法
python·html·api
事圆则缓15 小时前
Kotlin Flow、StateFlow、SharedFlow 全解析:冷流、热流与 Android 状态管理
android·kotlin·php
汤米粥16 小时前
后端开发主流技术方案
java·python·golang·php·nodejs·后端开发
我就是不信16 小时前
用 C 语言实现一个支持 HTML 与视频的 HTTP(S) 服务器
c语言·html·音视频
在猴站学算法16 小时前
(实战)PHP文件包含漏洞
网络安全·php
谢亮_vipxieliang17 小时前
PHP 8 新特性:构造器属性提升与实战
开发语言·后端·php
Highcharts.js17 小时前
动态数据可视化架构:Highcharts + PHP + MySQL 从数据库到数据渲染
数据库·mysql·php·开发文档·实时数据·highcharts·图表开发