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

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

  • использование файлов htaccess и htpasswd для хранения и аутентификации пользователей
  • использование php для CRUD и MySQL (или любой другой базы данных) для хранения информации

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

конечно, в лучшем случае предполагается для обоих вариантов: учитываются инъекции MySQL, пароль md5 / sha1 / md5+sha1 / any другие средства зашифрованы и т. д.

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

2 ответов


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

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

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

  • при выходе из .htaccess проверка подлинности - это сука


практически нет разницы между 2 способами с точки зрения безопасности полета. но все опасения Пекки обоснованны. Если вы просто хотите использовать HTTP Basic Auth (т. е. всплывающее окно) в отличие от формы входа, вы можете сделать это через PHP. ища $_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
    }

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