Как защитить паролем веб-сайт 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-*" может быть там, где файлы для страниц отдельных пользователей настраиваются в его системе.

Другие вопросы по тегам