Страница входа в систему против HTPASSWD - Что более безопасно?

StackOverflow https://stackoverflow.com/questions/5833096

  •  27-10-2019
  •  | 
  •  

Вопрос

Учитывая простую систему входа (регистрация и вход), какой из двух вариантов более безопасен:

  • Использование файлов HTACCESS и HTPASSWD для хранения и аутентификации пользователей
  • Использование PHP в Crud и MySQL (или любая другая база данных на самом деле) для хранения информации

Информация о пользователе состоит исключительно из имени пользователя.

Конечно, предполагается наиболее вариант для обоих вариантов: учет MySQL учитываются, пароль-MD5/SHA1/MD5+SHA1/Любые другие средства, зашифрованные и т. Д.

Если вам интересно, в первом случае PHP добавит учетные данные пользователя в файл HTPASSWD. (видеть это Вопрос для примера реализации.)

Это было полезно?

Решение

Я бы всегда говорил форму входа в систему (под которой я предполагаю, что вы имеете в виду стандартную аутентификацию на основе сеансов).

  • .htaccess Аутентификация передает пароль по каждому запросу (конечно, SSL поможет здесь)

  • .htaccess Аутентификация не имеет никакой защиты от ограничения скорости / грубой силы по умолчанию в Apache

  • Выходить из .htaccess аутентификация это сука

Другие советы

В значительной степени нет разницы между двумя способами с точки зрения безопасности полета. Но все опасения Пекки все действительны. Если вы просто хотите использовать HTTP Basic Auth (то есть всплывающее окно), в отличие от формы входа в систему, вы можете сделать это через PHP. by looking for $_SERVER['PHP_AUTH_USER'] И если вы не обнаружите, что отправьте ответ 401 ответ, такой как:

    if (!isset($_SERVER['PHP_AUTH_USER'])) {
            header('WWW-Authenticate: Basic realm="MY REALM"');
            header('HTTP/1.0 401 Unauthorized');
            echo 'Please Contact us if you are having problems logging in';
            exit;
    } else {
            //not their first time through
            //check their username and password here
            $username = trim($_SERVER['PHP_AUTH_USER']);
            $password = trim($_SERVER['PHP_AUTH_PW']);
            //do login
    }

Таким образом, вы можете выполнить предел скорости/обнаружение грубой силы. Установите сеанс, чтобы пароли не были отправлены с каждым запросом, и облегчает регистрацию пользователя и отслеживая их.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top