Страница входа в систему против 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
}
таким образом, вы можете сделать ограничение скорости/обнаружение грубой силы. Установите сеанс, чтобы Пароли не отправлялись с каждым запросом, и сделайте ведение журнала пользователь и отслеживать их путь проще.