Моя каждая кодировка & Алгоритм настройки в порядке, но требуется ваш совет, если я иду в направлении или нет. У меня есть две проблемы, где требуется совет / обзор.
Концерн I: Алгоритм
На странице входа в систему мы не используем Google Reaptcha. Но у нас есть следующая логика, чтобы контролировать наводнение & заблокировать 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, но
это может замедлить загрузку страницы, не так ли? что касается длинного списка заблокированных
IP-адреса? Есть идея получше?
Концерн II: Алгоритм
На забыл-username.php & Страница забыли пароль.php у нас есть Google recaptcha. Таким образом, мы не добавили никакого алгоритма контроля за наводнениями здесь, просто для попытки не пользователя мы просто перенаправили их на страницу регистрации.
С точки зрения безопасности этот подход в порядке?
Моя первая проблема была решена, как кажется с предложением 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();
}
Других решений пока нет …