Intereting Posts

Как о неудачных попытках для htaccess защищенных паролем каталогов

Этот вопрос связан с предыдущим вопросом, который я задал, но это другое.

Я использую htaccess для управления входом в http://somesite.com/folder .

После входа в систему у меня есть php-код в folder/index.php чтобы проверить имя пользователя и пароль, используемые для входа в систему: $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'] . Я регистрирую эту информацию в базе данных.

Это работает, когда пользователь поставляет хорошее имя пользователя и пароль, но когда он неверен, ничего не происходит – я полагаю, потому что /index.php никогда не достигается.

Есть ли способ входа в систему и неудачные попытки входа в систему?

РЕДАКТИРОВАТЬ

Это простой способ сделать это. В вашем .htaccess добавьте

 ErrorDocument 401 /path/to/log.php 

Этот log.php вызывается при неудачной попытке входа в систему (вы также можете поместить его в защищенный каталог, он будет достигнут, даже если логин завершится с ошибкой). Обратите внимание, что браузер не знает, нуждается ли какой-то ресурс в аутентификации, поэтому вы всегда получите удар для первой попытки. Эти попытки, однако, не будут содержать имени пользователя, и вы можете их обнаружить (ну, вы можете отличить их от того, когда пользователь не вводит имя пользователя, но вы получите эту идею), проверив, является ли $_SERVER['PHP_AUTH_USER'] пустым.

оригинал

Ну, нет, как вы говорите, /index.php никогда не достигается.

Что вы можете сделать, так это не полагаться на Apache вообще и обрабатывать аутентификацию только с помощью PHP. На этой странице руководства показано, как. Это имеет большой недостаток. Допустим, вы защитили весь каталог. В этом каталоге есть файлы PHP, изображения и многое другое. Теперь, чтобы обеспечить аутентификацию, вы должны маршрутизировать все через файл PHP. Если у вас есть только файлы PHP, вы можете сделать это с помощью include. Если у вас есть статическое содержимое, вы должны направить его с помощью правила перезаписи через файлы PHP, которые читают и выводят статический контент, что повредит производительности.

Если ваша цель состоит в том, чтобы заблокировать пользователей, которые неоднократно отказываются от проверки подлинности, вы можете использовать базовый auth для Apache и просто установить fail2ban . Установите его и забудьте!