拒绝访问MVC目录结构中的私人文件夹

时间:2014-04-27 08:51:27

标签: php .htaccess directory-permissions

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

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

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

任何能够帮助我或指出正确方向的人都能实现这一目标吗?

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

3 个答案:

答案 0 :(得分:1)

将此.htaccess添加到您不想直接访问的所有文件夹中。

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

答案 1 :(得分:1)

如果您使用Apache,典型的解决方案是将.htaccess文件放在./private中,其中包含:

Deny from all 

我也同意hakre对你的webroot更有意义的公共目录。

另一种解决方案是公开webroot,然后将webroot目录中的私人移到

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

www是你的webroot。

答案 2 :(得分:1)

有两种方法:

1:正确的方式

/ homedir / - 您的网站

/ homedir / private / - 您的私人文件

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

2:另一种方式

/ httpdocs / private / - 私人文件

/httpdocs/private/.htaccess - 订单允许,拒绝全部拒绝

/ httpdocs / - 其余文件

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

这意味着您的所有私人文件都可以通过浏览器使用。

这就是为什么第一种方式优先于.htaccess限制。

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

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

    define(“MY_SECRET_CONSTANT”,1);

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

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