S3.Blog

19 Марта 2024
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

Apache Basic-авторизация

Дата последнего изменения: 28 Марта 2011
Метки статьи: Документация
Защита сайта средствами самого сервера Apache является одним из самых простых и в тоже время достаточно надежных способов.
 

Подробно расписывать всю документацию я тут не буду(для этого есть несколько сайтов, где все предельно доступно разжевано, ссылки на них смотрите в конце статьи), остановлюсь только не некоторых аспектах.

  • Доступ всем пользователям, прошедшим авторизацию
    AuthType Basic 
    AuthName "Private zone. Only for administrator!"
    AuthUserFile  /usr/host/mysite/.htpasswd 
    require valid-user
    

     
  • Доступ только пользователям admin и root
    AuthType Basic 
    AuthName "Private zone. Only for administrator!"
    AuthUserFile  /usr/host/mysite/.htpasswd 
    require user admin root

     
  • Запрет доступа только к файлу private.zip
    <Files private.zip>
    AuthType Basic
    AuthName "Private zone. Only for administrator!"
    AuthUserFile  /usr/host/mysite/.htpasswd
    require valid-user
    </Files>

     
  • Запрет свободного доступа ко всему, кроме файла public.cgi
    AuthType Basic
    AuthName "Private zone!"
    AuthUserFile  /usr/host/mysite/.htpasswd
    require valid-user
    <Files public.cgi>
    Satisfy Any
    </Files>

     
  • Запрет свободного доступа ко всему, кроме файла public.cgi с передачей ему аутентификационных данных
    AuthType Basic
    AuthName "Private zone!"
    AuthUserFile  /usr/host/mysite/.htpasswd
    require valid-user
    <Files public.cgi>
        Satisfy Any
        RewriteEngine On
        RewriteRule .* - [E=HTTP_CGI_AUTHORIZATION:%{HTTP:Authorization},L]
    </Files>

    так как в $ENV{HTTP_CGI_AUTHORIZATION} логин и пароль закодированы в base64, то надо будет их декодировать:
    use MIME::Base64;
    $ENV{HTTP_CGI_AUTHORIZATION} =~ s/basic\s+//i;
    my ($login, $password) = split(/:/, decode_base64($ENV{HTTP_CGI_AUTHORIZATION}));
    
    Ну и попутно: сгенерировать окно apache-авторизации в perl:
    unless ($login && $password) {
        print "Status: 401\r\n",
           "WWW-Authenticate: Basic realm=\"test\"\r\n",
           "Content-type: text/plain\r\n\r\n",
           "Authorization required!\r\n";
    }



Более подробно про Apache-авторизацию вы можете почитать тут:
Apache HTTP Server: Authentication, Authorization, and Access Control
.htaccess примеры
Практические решения по использованию файла .htaccess
"Защита сайта с помощью .htaccess и .htpasswd"
Настройка httpd.conf - файла для .htaccess



Похожие материалы:




 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.