Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何保护管理文件夹php_Php_Css_Security - Fatal编程技术网

如何保护管理文件夹php

如何保护管理文件夹php,php,css,security,Php,Css,Security,我正在寻找一种方法,我可以安全管理区,特别是文件夹本身从外部访问(其中包括与图像和css文件夹)。我读过很多建议,但他们都觉得这是一种妥协或变通的方法,而不是一种防弹的方法,或者我不明白哪种方法对安全最有利,并且是对外部世界隐藏的,我想成为唯一知道或访问它的人。希望有人能透露一些他们将要使用的信息,当他们希望该区域完全隐藏在外部世界之外,而您仍然可以访问 我遇到的一些方法包括: 正在根目录外移动文件夹 使用Htaccess拒绝所有。(也意味着我不能登录,除非我应用了我没有的静态IP地址) 我想到

我正在寻找一种方法,我可以安全管理区,特别是文件夹本身从外部访问(其中包括与图像和css文件夹)。我读过很多建议,但他们都觉得这是一种妥协或变通的方法,而不是一种防弹的方法,或者我不明白哪种方法对安全最有利,并且是对外部世界隐藏的,我想成为唯一知道或访问它的人。希望有人能透露一些他们将要使用的信息,当他们希望该区域完全隐藏在外部世界之外,而您仍然可以访问

我遇到的一些方法包括:

  • 正在根目录外移动文件夹
  • 使用Htaccess拒绝所有。(也意味着我不能登录,除非我应用了我没有的静态IP地址)
  • 我想到的另一种方法是使用session变量来存储admin,根据session ID识别并授予访问权限(这意味着所有其他css文件和图像文件夹都是可查看的)
  • 在文件夹中添加索引页,我看到很多网站都这样做 我目前有我的登录脚本将我重定向到我的管理区域,因此,如果登录的管理php文件请求,整个文件夹是否可以识别它是我,并授予访问权限和提供文件?如果不拒绝访问,包括图像和css等


    不知道怎样才能最好地保护这个地区?使用会话是识别管理员的安全方法吗?

    确保内容不向web公开的最简单方法是将其放在目录结构中的站点文件夹上方

    例如,在Apache配置中,将站点装载到

    /var/www/sites/site/content/

    并将受限制的内容放置在

    /var/www/sites/site/

    这样,内容就不会公开,但php仍然可以在需要时读取它

    显然,如果php读取并回显css文件,这不会阻止用户查看css文件中的内容,但我不明白为什么css文件需要安全

    编辑

    <?php
    
    require_once __DIR__ . '/../index.php';
    
    <?php
    
    session_start();
    
    if (!isset($_SESSION['user'])) {
        header('HTTP/1.0 403 Forbidden');
        exit; // important to prevent further execution of the script
    }
    
    $file = $_SERVER['REQUEST_URI']; // important to sanitize or possible check against whitelist the requested resource
    
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    
    switch ($ext) {
        case 'jpg':
        case 'jpeg':
            header('Content-type: image/jpeg');
            imagejpeg('/path/to/protected/resources/' . $file);
            break;
    }
    
    假设您的服务器上有一个文件夹,位于
    /var/www/sites/site/content/some_folder

    然后在浏览器中输入
    www.yoursite.com/some_folder
    ,假设站点中打开了索引,您将看到
    some_folder

    但是你怎样才能从网络浏览者那里获得
    /var/www/sites/site/
    。。。你不能

    但你能做的是这样的事情:

    这将是主站点文件夹中的一个php文件(对公众可见)


    确保内容不向web公开的最简单方法是将其放置在目录结构中的站点文件夹上方

    例如,在Apache配置中,将站点装载到

    /var/www/sites/site/content/

    并将受限制的内容放置在

    /var/www/sites/site/

    这样,内容就不会公开,但php仍然可以在需要时读取它

    显然,如果php读取并回显css文件,这不会阻止用户查看css文件中的内容,但我不明白为什么css文件需要安全

    编辑

    <?php
    
    require_once __DIR__ . '/../index.php';
    
    <?php
    
    session_start();
    
    if (!isset($_SESSION['user'])) {
        header('HTTP/1.0 403 Forbidden');
        exit; // important to prevent further execution of the script
    }
    
    $file = $_SERVER['REQUEST_URI']; // important to sanitize or possible check against whitelist the requested resource
    
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    
    switch ($ext) {
        case 'jpg':
        case 'jpeg':
            header('Content-type: image/jpeg');
            imagejpeg('/path/to/protected/resources/' . $file);
            break;
    }
    
    假设您的服务器上有一个文件夹,位于
    /var/www/sites/site/content/some_folder

    然后在浏览器中输入
    www.yoursite.com/some_folder
    ,假设站点中打开了索引,您将看到
    some_folder

    但是你怎样才能从网络浏览者那里获得
    /var/www/sites/site/
    。。。你不能

    但你能做的是这样的事情:

    这将是主站点文件夹中的一个php文件(对公众可见)


    第一步实际上是将所有要阻止公众访问的文件移到文档根目录之外。这样就无法通过Web服务器直接访问文件

    如果您希望阻止对所有资源(包括图像、脚本、样式表等)的访问,您可以实现一个“代理”,负责提供文件(在检查用户是否获得授权后)

    最简单、最灵活的方法是在应用程序中有一个入口点。使用apache,可以使用以下重写规则轻松实现这一点:

    RewriteEngine On
    RewriteRule ^(.*)$ index.php [L,QSA]
    
    这将确保每个请求都通过index.php文件

    不,您可以轻松检查是否允许您使用访问资源,例如:

    <?php
    
    session_start();
    
    if (!isset($_SESSION['user'])) {
        header('HTTP/1.0 403 Forbidden');
        exit; // important to prevent further execution of the script
    }
    
    // user is allowed access, do shit
    

    第一步实际上是将所有要阻止公众访问的文件移到文档根目录之外。这样就无法通过Web服务器直接访问文件

    如果您希望阻止对所有资源(包括图像、脚本、样式表等)的访问,您可以实现一个“代理”,负责提供文件(在检查用户是否获得授权后)

    最简单、最灵活的方法是在应用程序中有一个入口点。使用apache,可以使用以下重写规则轻松实现这一点:

    RewriteEngine On
    RewriteRule ^(.*)$ index.php [L,QSA]
    
    这将确保每个请求都通过index.php文件

    不,您可以轻松检查是否允许您使用访问资源,例如:

    <?php
    
    session_start();
    
    if (!isset($_SESSION['user'])) {
        header('HTTP/1.0 403 Forbidden');
        exit; // important to prevent further execution of the script
    }
    
    // user is allowed access, do shit
    

    是的,您应该将内容移出文档根目录。您可以尝试使用.htaccess来保护您的文件,但允许.htaccess覆盖本身可能是一个安全问题。这当然是一个性能问题

    只需将您的404处理程序指向如下内容

    <?php
    define('REQUEST_PATH', '/secure');
    define('SECURED_CONTENT', '/var/www/restricted');
    
    $req=parse_url($_SERVER["REQUEST_URI"]);
    
    if ((0===strpos($req['path'],REQUEST_PATH)) 
        && $_SESSION['authenticated']) {
           if (is_readable(SECURED_CONTENT . $req['path']) 
               && is_file(SECURED_CONTENT . $req['path'])) {
                  header('Content-type: ' 
                     . mime_content_type(SECURED_CONTENT . $req['path']);
                  include(SECURED_CONTENT . $req_path);
           } else {
                 header('HTTP/1.0 404 Not Found');
           }
           exit;
    } 
    header('HTTP/1.0 403 Forbidden');
    

    是的,您应该将内容移出文档根目录。您可以尝试使用.htaccess来保护您的文件,但允许.htaccess覆盖本身可能是一个安全问题。这当然是一个性能问题

    只需将您的404处理程序指向如下内容

    <?php
    define('REQUEST_PATH', '/secure');
    define('SECURED_CONTENT', '/var/www/restricted');
    
    $req=parse_url($_SERVER["REQUEST_URI"]);
    
    if ((0===strpos($req['path'],REQUEST_PATH)) 
        && $_SESSION['authenticated']) {
           if (is_readable(SECURED_CONTENT . $req['path']) 
               && is_file(SECURED_CONTENT . $req['path'])) {
                  header('Content-type: ' 
                     . mime_content_type(SECURED_CONTENT . $req['path']);
                  include(SECURED_CONTENT . $req_path);
           } else {
                 header('HTTP/1.0 404 Not Found');
           }
           exit;
    } 
    header('HTTP/1.0 403 Forbidden');
    

    CSS和JS文件中没有任何机密内容(如果有,您就有一个