拒绝访问MVC目录结构中的专用文件夹



我的MVC目录结构中有一个私人文件夹,我想拒绝对其的所有访问。访问此文件夹(和包含文件)的唯一方法是仅通过includes。

对于公用文件夹,任何人都应该能够访问它,因为这是我的视图。

根index.php是我的入口文件,它应该能够包含并执行私有的index.php脚本。

有谁能帮助我或为我指明实现这一目标的正确方向吗?

private
    model
    controller
    core
    config.ini.php
    index.php
    ...
public
    stylesheets
    signup.php
    login.php
    index.php
    ...
index.php

有两种方法:

1:正确的方式

/homedir/-您的网站所在的位置

/homedir/private/您的私人文件所在的位置

/homedir/httpdocs/-网站的公共部分

2:另一种方式

/httpdocs/private/-private文件

/httpdocs/private/.htaccess-从所有订购允许、拒绝和拒绝

/httpdocs/-的其余文件

但是,您应该知道,如果您的Web服务器挂断,或者更改某些特定设置,您的.htaccess文件可能会变为非活动文件。

这意味着你的所有私人文件都可以通过浏览器访问。

这就是为什么第一种方式比.hta访问限制更受欢迎的原因。

还有什么可能?代码级别限制:

  1. 在每个公共php脚本中定义一个常量:

    define("MY_SECRET_CONSTANT",1);

  2. 在每个私有php脚本中,检查是否在代码的第一行定义了常量:

    if(!defined("MY_SECRET_CONSTANT")){die("无法直接打开文件")}

为您不想直接访问的所有文件夹添加this.htaccess。

<Files *.php>
    Order Deny,Allow
    Deny from all
</Files>

如果您使用Apache,典型的解决方案是放入.htaccess文件/私有包含:

Deny from all 

我也同意hakre的观点,即它对您的webroot公共目录更有意义。

另一种解决方案是将webroot设为公共,然后将private移到webroot目录的外部。

即。

site/private/...etc...
site/www/index.php
site/www/stylesheets/...etc...

www是你的webroot。

相关内容

  • 没有找到相关文章

最新更新