Как защитить паролем веб-сайт Apache?
Я добавил.htaccess
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user
и.htpasswd
имя пользователя Пароль
Тем не менее, это не работает. Он не запрашивает у меня логин.
3 ответа
Ваш файл .htaccess выглядит нормально. Единственная причина, по которой он работает не так, как у вас, заключается в том, что Apache настроен на его игнорирование.
В вашем конфиге apache, в идеале в файле sites-* config, добавьте:
<Directory /path/to/the/directory/you/are/protecting/>
AllowOverride AuthConfig
</Directory>
Директива AllowOverride - это то, что позволяет файлу htaccess функционировать. По умолчанию большинство настроек Apache отключено (на самом деле установлено None), включая Ubuntu/Debian.
В вашем файле .htpasswd пароль должен быть зашифрован. Это проще всего сделать с помощью инструмента htpasswd, предложенного mezgani. Это будет выглядеть так, если вы прочитаете файл:
bob:abJnggxhB/yWI
С директивой AllowOverride, установленной как минимум в AuthConfig, с вашим файлом.htaccess и вашим.htpasswd, содержащим пользователя с зашифрованным паролем, вы должны быть в порядке.
Сначала добавьте следующее в вашу конфигурацию apache:
<Directory /path/to/the/directory/you/are/protecting/>
AllowOverride AuthConfig
Опции Индексы MultiViews FollowSymLinks
отрицать все
Заказать отказать, разрешить
</Directory>
После этого вы можете создать файл.htpasswd, который будет содержать ваш логин и пароль с помощью команды htpasswd, а не вручную
htpasswd -c /path/to/the/directory/you/are/protecting/.htpasswd username
Я думаю, что перемещение файла.htpasswd куда-то, отличное от пути к каталогу, который вы защищаете, более безопасно.
Кроме того, по соображениям безопасности, пожалуйста, прочитайте эту статью на securityfocus
В Snow Leopard (OS X 10.6) изменение AllowOverride в httpd.conf включает защиту.htaccess только на основных веб-страницах (по умолчанию /Library/WebServer). Включение его для папок ~/Sites отдельных пользователей контролируется отдельным файлом.conf для каждого пользователя. В моих системах это находится в / etc / apache / users. Ссылка Джеффа Снайдера на "in sites-*" может быть там, где файлы для страниц отдельных пользователей настраиваются в его системе.