Защита паролем каталога и всех его подпапок с использованием .htaccess

Я пытаюсь защитить паролем поддомен и все его подкаталоги и файлы, но мои знания по этому вопросу очень ограничены, как я могу это сделать?

Ответ 1

Это простой двухэтапный процесс

В вашем .htaccess поставьте

AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user

используйте http://www.htaccesstools.com/htpasswd-generator/ или командную строку для генерации пароля и поместите его в .htpasswd

Примечание 1: Если вы используете cPanel, вы должны настроить в разделе безопасности "Папки защиты паролем"

EDIT: Если это не сработало, тогда вам нужно сделать AllowOverride All в каталог .htaccess(или по крайней мере до предыдущих) в http.conf, за которым следует apache перезагрузка

<Directory /path/to/the/directory/of/htaccess>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride All
</Directory>

Ответ 2

Чтобы защитить паролем каталог, обслуживаемый Apache, вам нужен файл .htaccess в каталоге, который вы хотите защитить, и файл .htpasswd, который может находиться в любом месте вашей системы, к которому пользователь Apache может получить доступ (но поместите его где-нибудь разумно и приватно). Скорее всего, вы не хотите помещать .htpasswd в ту же папку, что и .htaccess.

Возможно, файл .htaccess уже существует. Если нет, создайте его. Затем вставьте:

AuthType Basic
AuthName "Your authorization required message."
AuthUserFile /path/to/.htpasswd
require valid-user

Затем создайте файл .htpasswd, используя любое имя пользователя и пароль. Пароль должен быть зашифрован. Если вы работаете на сервере Linux, вы можете использовать команду htpasswd, которая зашифрует пароль для вас. Вот как эта команда может быть использована для этого:

htpasswd -b/path/to/password/file username password

Ответ 3

Возможно, вы захотите использовать модуль mod_auth_digest. Apache предоставил очень хороший руководство для использования всего спектра модулей аутентификации и авторизации.

Ответ 4

Вам нужно сгенерировать пароль (имя пользователя + пароль) для аутентификации, записать его в файл и поместить его в подкаталог, который вы хотите ограничить доступ.

Строка выглядит так:

username:hashkey
  • Вы можете использовать HTTP-генератор паролей для этого.
  • Скопируйте и вставьте строку, полученную с вышеуказанного сайта, в новый файл (.htpasswd) в любом месте за пределами веб-сайта вашего сайта (лучше держать где-либо внутри домашнего каталога пользователя).
  • Добавьте следующие строки в ваш .htaccess файл.
AuthType Basic
AuthName "Require Authentication"
AuthUserFile [PATH_TO_FILE]/.htpasswd
Require valid-user
  • Если пароль не запускается, проверьте разрешение файла .htaccess.

  • Если аутентификация завершается с ошибкой, проверьте наличие файла .htpasswd в указанном месте. (Убедитесь, что ваша учетная запись пользователя имеет достаточно привилегий для чтения файла .htpasswd)

  • Для этого вам не нужно перезагружать сервер.

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы.

Ответ 5

Чтобы создать правильный пароль, вы можете создать файл php и запустить его локально (на вашем компьютере, а не на веб-сервере) со следующим содержимым:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<form method="post" accept-charset="utf-8">
    <input type="text" name="clear"/>
    <input type="submit" name="submit" value="generate" />
</form>

<?php
header("Content-Type: text/html; charset=utf-8");

if (isset($_POST['clear']) && $_POST['clear'] != '') {
    $cl = $_POST['clear'];
    $pw = crypt($cl, base64_encode($cl));
    echo $pw;
}
?>
</body>
</html>

Обычно я помещаю свой файл .htpasswd в каталог с именем/htpasswd/вне каталога webcontent, например AuthUserFile /home/www/usr122/files/htpasswd/.sportsbar_reports_htpasswd (а не в папке webcontent /home/www/usr122/html/htpasswd/) и переименуйте файл .htpasswd в том, что он предназначен, например. .sportsbar_reports_htpasswd

Файл паролей должен выглядеть как

testusername:dGATwCk0tMgfM

где имя пользователя testusername и пароль testuserpassword

Ответ 6

Просто расширьте ответ Махеша.

.htaccess
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd
require valid-user

Если вы не хотите использовать онлайн-генератор паролей, вы можете использовать openssl

openssl passwd -apr1 your_password

Затем поместите сгенерированный пароль в .htpasswd формате:

username:<generated_password>

Пример:

.htpasswd
username:$apr1$ydbofBYx$6Zwbml/Poyb61IrWt6cxu0