【问题标题】:.htaccess to secure admin directory in mvc architecture.htaccess 到 mvc 架构中的安全管理目录
【发布时间】:2017-07-08 13:38:10
【问题描述】:

我正在尝试创建一个具有 mvc 结构的站点。我有这个:

  • www/

    • 博客/

      • 应用/
        • 管理员/
          • 控制器/
          • 型号/
          • 查看/
        • 配置/
        • 前/
          • 控制器/
          • 型号/
          • 查看/
      • 资产/
      • 图片/
      • 库/
    • 作品集/

我在根目录 (www/) 有一个用于 Gzip 压缩和其他内容的第一个 .htaccess。 我的博客(在 www/blog/ 中)有第二个 .htaccess 和我非常基本的重定向系统:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
#QSA permet de garder les paramètres GET et les ajouter à la suite
RewriteRule (.*) index.php?p=$1 [QSA]

www/blog/ 中的文件 index.php 解析 url 并使用正确的控制器,如下所示:

//****************************************************

include_once(APP_f.controller/controller.class.php');
$controlF = new ControleurF();

include_once(APP_b.'controleur/controleur.class.php');
$controlB = new ControleurB();


if (isset($_GET['p'])&&(substr($_GET['p'],0,4)== 'admin')) {
//on est dans l'admin
    $lapage=explode('/',$_GET['p']);
    if (!empty($lapage[1])) {$pp = $lapage[1];} else {$pp="index";}

    if (!isset($pp) OR $pp == 'index')
    { 
        $ctrl = "home"; $p = $ctrl;
    } else { 
        $params = explode('/',$pp); 
        $ctrl = $params[0]; $p = $ctrl;
        if (isset($params[1])) { 
            if ($params[1]<>"") {$p = $params[1];} 
        }   
    }

    $c=$controlB->load($ctrl);
    include_once($c);

}else{
//on est en front
    if (!isset($_GET['p']) OR $_GET['p'] == 'index')
    { 
        $ctrl = "home"; $p = $ctrl;
    } else { 
        $params = explode('/',$_GET['p']); 
        $ctrl = $params[0]; $p = $ctrl;
        if (isset($params[1])) { 
            if ($params[1]<>"") {$p = $params[1];} 
        }   
    }

    $c=$controlF->load($ctrl);
    include_once($c);
}

//****************************************************

一切正常,但我无法理解如何使用 .htaccess/.htpasswd 保护我的管理文件夹 有没有办法在 www/blog/.htaccess 中做类似的事情:

<Directory admin>
AuthUserFile "/home/foobar/www/blog/.htpasswd"
AuthGroupFile /dev/null
AuthName "Admin"
AuthType Basic
Require valid-user
</Directory>

【问题讨论】:

    标签: .htaccess security model-view-controller administration


    【解决方案1】:

    Directory 指令只能在服务器配置或虚拟主机文件中使用。它不能在 htaccess 文件中使用。在Apache Directory Directive 中有描述。

    要使用 htaccess 对目录进行密码保护,您必须在 .htaccess 文件中输入以下内容:

    AuthType Basic
    AuthName "Restricted Files"
    # (Following line optional)
    AuthBasicProvider file
    AuthUserFile "/usr/local/apache/passwd/passwords"
    Require user rbowen
    

    以上命令将密码保护包含 htaccess 文件的文件夹。命令:htpasswd -c /usr/local/apache/passwd/passwords rbowen 为用户 rbowen 生成密码。在Apache Authentication and Authorization中有描述

    【讨论】:

    • 感谢 Nadir 的回答。在这种 MVC 架构中,有没有比使用 htaccess 使用密码保护/保护 admin 文件夹更好的方法?
    • Syl,htaccess 密码保护使用 Basic 或 SHA-1 加密。这两种加密方法都很弱且易于解密。建议通过 SSL 连接使用 htaccess 密码保护。保护管理区域的另一种选择是根据用户名和密码实施自定义安全登录方案
    【解决方案2】:

    我找到了一种方法:使用 php 会话 http://www.apprendre-php.com/tutoriels/tutoriel-14-les-sessions.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 2017-07-04
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多