You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义PHP框架文件访问防护及.htaccess可见问题求助

解决自定义PHP框架的文件访问安全问题

一、禁止直接访问核心目录(views/classes/models/controllers)

核心思路是通过服务器配置拦截对这些目录的直接请求,确保所有业务请求都经过框架入口文件(如index.php)处理。

Apache环境(.htaccess配置)

在项目根目录的.htaccess中添加以下规则:

RewriteEngine On

# 拦截对核心目录的直接请求,返回404
RewriteRule ^(views|classes|models|controllers)/ - [R=404,L]

# 将所有非文件/目录的请求转发到入口文件index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

额外防护:目录内添加防护文件

在views、classes、models、controllers每个目录下创建index.php文件,内容如下:

<?php
http_response_code(404);
exit;

即使服务器配置失效,该文件也会阻止目录内容被直接列出或文件被访问。

二、禁止访问.htaccess文件

在根目录的.htaccess中补充以下规则:

<Files ".htaccess">
    Require all denied
</Files>

三、确认路由入口逻辑

确保所有请求都通过框架入口文件(如index.php)触发路由,示例入口代码:

<?php
require_once 'classes/SimpleRouter.php';

use router\SimpleRouter;

$router = new SimpleRouter();

// 示例路由规则
$router->addRoute('GET', '/', 'home');

// 处理当前请求
$router->route($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

内容的提问来源于stack exchange,提问作者Manish Shahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:34:57