MySQL — лучшая практика PHP для управления блокировкой IP-адресов и управления потоком при входе пользователя

Моя каждая кодировка & Алгоритм настройки в порядке, но требуется ваш совет, если я иду в направлении или нет. У меня есть две проблемы, где требуется совет / обзор.

Концерн I: Алгоритм

На странице входа в систему мы не используем Google Reaptcha. Но у нас есть следующая логика, чтобы контролировать наводнение & заблокировать ip:

  • Для каждой неудачной попытки входа в систему мы сохраняем его IP-адрес в таблице MySQL «флуд» с IP-адресом. & время.
  • Таким образом, мы храним & проверьте максимум 20 попыток за последние 2 часа. Если это произойдет, то мы удаляем все записи потока, связанные с этим IP & добавить этот IP в таблицу mysql «block_ip».

Для каждой из наших страниц PHP (30+) мы вызываем следующую функцию блокировки IP-адресов, чтобы перенаправлять заблокированных IP-посетителей на страницу «block.php».

function block_ip(){
$mysqli_2 = new mysqli(HOST, USER, PASSWORD, DATABASE);
if ($mysqli_2->connect_error) {
header("Location: ../error.php?err=Unable to connect to MySQL");
exit();
}
$stmt_block_ip= $mysqli_2->prepare("SELECT b_ip FROM block_ip");
$stmt_block_ip->execute();
$stmt_block_ip->store_result();
$stmt_block_ip->bind_result($block_iip);
while( $stmt_block_ip->fetch()){
if(strpos($_SERVER['REMOTE_ADDR'],$block_iip) === 0)
{
header("Location: ../block.php");
exit();
}
}
$stmt_block_ip->close();
}
  • Следующий план администратора: если общее количество заблокированных IP-адресов превышает 50, очистите таблицу, скопировав все заблокированные IP-адреса. & попросить поставщика услуг сервера добавить его в .htaccess, чтобы перенаправить их.

Эта идея хороша? или я должен держать это на заблокированной таблице IP, но
это может замедлить загрузку страницы, не так ли? что касается длинного списка заблокированных
IP-адреса? Есть идея получше?

Концерн II: Алгоритм

На забыл-username.php & Страница забыли пароль.php у нас есть Google recaptcha. Таким образом, мы не добавили никакого алгоритма контроля за наводнениями здесь, просто для попытки не пользователя мы просто перенаправили их на страницу регистрации.

С точки зрения безопасности этот подход в порядке?

0

Решение

Моя первая проблема была решена, как кажется с предложением WillParky: код ниже, проверка IP-блоков должна выполняться быстрее. Я думаю, мне не нужно использовать .htaccess & перенести заблокированный IP тут и там.

  function block_ip(){
$viewer_ip = $_SERVER['REMOTE_ADDR'];
$mysqli_2 = new mysqli(HOST, USER, PASSWORD, DATABASE);
if ($mysqli_2->connect_error) {
header("Location: ../error.php?err=Unable to connect to MySQL");
exit();
}
$stmt_block_ip= $mysqli_2->prepare("SELECT b_ip FROM block_ip WHERE b_ip =
?");
$stmt_block_ip->bind_param('s',$viewer_ip);
$stmt_block_ip->execute();
$stmt_block_ip->store_result();

if($stmt_block_ip->num_rows == 1){
{
header("Location: ../block.php");
exit();
}
}
$stmt_block_ip->close();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector