Apache Basic-авторизация
Защита сайта средствами самого сервера Apache является одним из самых простых и в тоже время достаточно надежных способов.
Подробно расписывать всю документацию я тут не буду(для этого есть несколько сайтов, где все предельно доступно разжевано, ссылки на них смотрите в конце статьи), остановлюсь только не некоторых аспектах.
Более подробно про Apache-авторизацию вы можете почитать тут:
Apache HTTP Server: Authentication, Authorization, and Access Control
.htaccess примеры
Практические решения по использованию файла .htaccess
"Защита сайта с помощью .htaccess и .htpasswd"
Настройка httpd.conf - файла для .htaccess
Подробно расписывать всю документацию я тут не буду(для этого есть несколько сайтов, где все предельно доступно разжевано, ссылки на них смотрите в конце статьи), остановлюсь только не некоторых аспектах.
- Доступ всем пользователям, прошедшим авторизацию
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