PHP ЗАЩИТА ОТ БРУТФОРСА
Защита от брутфорса является одной из наиболее важных задач в области безопасности веб-приложений, и PHP не исключение. Брутфорс-атаки - это попытки взлома системы методом перебора параметров авторизации, таких как логин и пароль. Хорошая защита от брутфорса должна позволять пользователям войти в систему, но заблокировать всех потенциальных злоумышленников.
Одной из самых распространенных мер безопасности является установка ограничений на количество попыток входа пользователя. Мы можем это сделать с помощью PHP, используя базу данных для хранения информации о попытках входа и времени проведения этих попыток. Если количество ничего не говорящих попыток входа превышает заданное значение за определенный период времени, этот пользователь должен быть временно заблокирован.
$login_attempts_max = 5; // ограничение на количество попыток входа$login_attempt_timeout = 60 * 10; // время блокировки в секундах$ip_address = $_SERVER['REMOTE_ADDR']; // IP адрес пользователя$username = $_POST['username']; // имя пользователя$password = $_POST['password']; // пароль$dbconn = mysqli_connect("localhost", "my_user", "my_password", "mydb"); // соединяемся с БД$result = mysqli_query($dbconn, "SELECT attempts, last_attempt FROM login_attempts WHERE ip_address='$ip_address' AND username='$username'"); // получаем данные о прошлых попытках входаif(mysqli_num_rows($result) == 1){ // если были предыдущие попытки входа$row = mysqli_fetch_assoc($result);$attempts = $row['attempts'] + 1;$last_attempt = $row['last_attempt'];if($attempts > $login_attempts_max && time() - strtotime($last_attempt) < $login_attempt_timeout){ // если превышен лимит попыток входа и время последней попытки входа меньше времени блокировки// заблокировать пользователя на $login_attempt_timeout секунд}else{ // если попыток входа не было превышено ограничение// проверить логин и пароль и записать данные о новой попытке входа в базу данных}}else{ // если не было предыдущих попыток входа// проверить логин и пароль и записать данные о новой попытке входа в базу данных}
Наряду с этим, мы также можем использовать CAPTCHA - систему, чтобы убедиться, что пользователь совершает вход в систему, а не бот. CAPTCHA в PHP имеются в различных формах, от простых математических задач до сравнения картинок или звуковых файлов.
004 - Форум с нуля - Шифрование пароля - Основы PHP/MySQL для новичков
Как узнать пароль от WiFi, ВКОНТАКТЕ и не только
PHP: основы безопасности сайта. SQL-инъекции, XSS-атаки и защита от них.
6 советов по безопасности PHP для защиты вашего сайта
Безопасность и защита сайта от угроз и взлома. Урок 1. Виды уязвимостей: xss, csrf, sql injection
Как легко взломать сайт на PHP — SQL injection
PHP все перестановки массива, брутфорс паролей - видеоурок