自定义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
相关产品推荐
相关产品推荐

