【问题标题】:Deny access to private folder in MVC directory structure拒绝访问 MVC 目录结构中的私有文件夹
【发布时间】:2014-04-27 08:51:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • index.php 移动到public 文件夹中,因为它是您的入口文件(前端控制器)。将您的网络服务器的 webroot 配置为 public 文件夹。完成(你应该首先做到这一点)。你有什么问题?
  • 你也写.htaccess。到目前为止你做了什么?除了我第一条评论中的建议之外,您还可以将您的网络服务器配置为拒绝访问某些资源(或者最好只允许访问您希望允许访问的资源。这样就不容易出错)
  • 因为我无法直接访问服务器设置,所以我认为 htaccess 是我最好的选择。
  • 您可以在该域的托管设置中指定 webroot 吗?如果是,请先发表评论。如果没有,仍然使用第一条评论,然后查看此处(和类似内容):stackoverflow.com/q/7945795/367456 - stackoverflow.com/q/4970903/367456 - ...
  • 好吧,比方说,最好不要在 webroot 中包含配置文件,这样它们就不会被托管。听起来像是前置条件而不是后置条件。还要确保您的应用程序可以安全地抵御目录遍历攻击 - 阅读此处了解更多信息:owasp.org/index.php/Path_Traversal

标签: php .htaccess directory-permissions


【解决方案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("无法直接打开文件。"}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      Deny from all 
      

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

      另一种解决方案是将 webroot 设为公共,然后将私有 移出 webroot 目录。

      即。

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

      www 是您的网站根目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-19
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        • 2011-05-11
        • 2010-12-01
        • 2011-12-12
        • 2018-01-10
        相关资源
        最近更新 更多