Что нового

Блокировка (бан) посетителя по IP при посещении опеделённых страниц сайта (1 Viewer)

  • Автор темы apelisin
  • Дата начала
A

apelisin

Посетитель
Регистрация
26 Дек 2022
Сообщения
75
Реакции
14
Блокировка (бан) посетителя по IP при посещении опеделённых страниц сайта.

Есть ли у кого идеи, как это можно реализовать в DLE 17.2 ?

Смысл в этом прост - блокировка посетителей по IP в автоматическом режиме, если они пытаются получить доступ к сайту (взлом) по определённым ссылкам (запросам).

Есть стандартная функция блокировки по IP и есть редиректы, которые сейчас использую как альтернативный вариант. Но постоянно следить кто и куда пытается зайти не возможно физически.
 
Есть. 30$, сделаю модуль
 
даже представить не могу для чего это может понадобиться
 
Например человек попытался зайти по адресу https://site.com/admin.php и сразу кидать его в бан, чтобы не искал админку.
ищет и ищет, админку можно просто переименовать и все
к тому же может он посетитель сайта, а админку ищет просто так

а если сам админ зайдет то его тоже заблокирует
 
Вы можете изменить адрес админ панели admin.php в настройках cms, при этом создать дополнительно admin.php с кодом
<?php
$allow_script = 1;

if ($allow_script) {

define('DATALIFEENGINE', true);
define('AUTOMODE', true);
define('LOGGED_IN', true);

define('ROOT_DIR', dirname(__FILE__));
define('ENGINE_DIR', ROOT_DIR . '/engine');

require_once(ENGINE_DIR . '/classes/plugins.class.php');
require_once(DLEPlugins::Check(ENGINE_DIR . '/inc/include/functions.inc.php'));
include_once(DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

$user_ip = $_SERVER['REMOTE_ADDR'];

$user_id = 0;
$descr = "Restricted area";
$date = time();
$days = 999;
$ip = $user_ip;

$expiry_date = strtotime("+$days days", $date);

$query1 = "INSERT INTO `" . PREFIX . "_banned` (`users_id`, `descr`, `date`, `days`, `ip`)
VALUES ('$user_id', '" . $db->safesql($descr) . "', '$expiry_date', '$days', '" . $db->safesql($ip) . "')";

$result1 = $db->query($query1);

$name = 'admin';
$action = 9;
$extras = '';

$query2 = "INSERT INTO `" . PREFIX . "_admin_logs` (`name`, `date`, `ip`, `action`, `extras`)
VALUES ('" . $db->safesql($name) . "', '$date', '" . $db->safesql($ip) . "', '$action', '" . $db->safesql($extras) . "')";

$result2 = $db->query($query2);

@unlink( ENGINE_DIR . '/cache/system/banned.php' );
$db->close();
}

die("Script not allowed");

?>
 
Вы можете изменить адрес админ панели admin.php в настройках cms, при этом создать дополнительно admin.php с кодом
<?php
$allow_script = 1;

if ($allow_script) {

define('DATALIFEENGINE', true);
define('AUTOMODE', true);
define('LOGGED_IN', true);

define('ROOT_DIR', dirname(__FILE__));
define('ENGINE_DIR', ROOT_DIR . '/engine');

require_once(ENGINE_DIR . '/classes/plugins.class.php');
require_once(DLEPlugins::Check(ENGINE_DIR . '/inc/include/functions.inc.php'));
include_once(DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

$user_ip = $_SERVER['REMOTE_ADDR'];

$user_id = 0;
$descr = "Restricted area";
$date = time();
$days = 999;
$ip = $user_ip;

$expiry_date = strtotime("+$days days", $date);

$query1 = "INSERT INTO `" . PREFIX . "_banned` (`users_id`, `descr`, `date`, `days`, `ip`)
VALUES ('$user_id', '" . $db->safesql($descr) . "', '$expiry_date', '$days', '" . $db->safesql($ip) . "')";

$result1 = $db->query($query1);

$name = 'admin';
$action = 9;
$extras = '';

$query2 = "INSERT INTO `" . PREFIX . "_admin_logs` (`name`, `date`, `ip`, `action`, `extras`)
VALUES ('" . $db->safesql($name) . "', '$date', '" . $db->safesql($ip) . "', '$action', '" . $db->safesql($extras) . "')";

$result2 = $db->query($query2);

@unlink( ENGINE_DIR . '/cache/system/banned.php' );
$db->close();
}

die("Script not allowed");

?>
Спасибо, но это не совсем то, что мне нужно.
 
Так вы распишите более подробно что вам нужно
Вывод списка заблокированных IP, возможность указать и в будущем изменять-удалять ссылку (страницу) зайдя на которую посетитель будет заблокирован. Возможность указать список пользователей, которые не будут заблокированы даже если они посетят запрещённую ссылку.
 
Уж модуль писать совсем лень. Код который описан выше сохраняет данные в лог и их можно просматривать в "Фильтр по: IP, Логину или E-Mail". Что касается страниц, так как я даже представления не имею о каких конкретно страницах вы говорите, то могу порекомендовать добавить код проверки id group как allow, всех остальных редиректить на страницу авто-блока, это позволит не выбирать конкретных пользователей, а достаточно будет внести их в определенную группу.
 
Вы можете изменить адрес админ панели admin.php в настройках cms, при этом создать дополнительно admin.php с кодом
<?php
$allow_script = 1;

if ($allow_script) {

define('DATALIFEENGINE', true);
define('AUTOMODE', true);
define('LOGGED_IN', true);

define('ROOT_DIR', dirname(__FILE__));
define('ENGINE_DIR', ROOT_DIR . '/engine');

require_once(ENGINE_DIR . '/classes/plugins.class.php');
require_once(DLEPlugins::Check(ENGINE_DIR . '/inc/include/functions.inc.php'));
include_once(DLEPlugins::Check(ROOT_DIR . '/language/' . $config['langs'] . '/website.lng'));

$user_ip = $_SERVER['REMOTE_ADDR'];

$user_id = 0;
$descr = "Restricted area";
$date = time();
$days = 999;
$ip = $user_ip;

$expiry_date = strtotime("+$days days", $date);

$query1 = "INSERT INTO `" . PREFIX . "_banned` (`users_id`, `descr`, `date`, `days`, `ip`)
VALUES ('$user_id', '" . $db->safesql($descr) . "', '$expiry_date', '$days', '" . $db->safesql($ip) . "')";

$result1 = $db->query($query1);

$name = 'admin';
$action = 9;
$extras = '';

$query2 = "INSERT INTO `" . PREFIX . "_admin_logs` (`name`, `date`, `ip`, `action`, `extras`)
VALUES ('" . $db->safesql($name) . "', '$date', '" . $db->safesql($ip) . "', '$action', '" . $db->safesql($extras) . "')";

$result2 = $db->query($query2);

@unlink( ENGINE_DIR . '/cache/system/banned.php' );
$db->close();
}

die("Script not allowed");

?>

В этом коде каждое обновление страницы приводит к появлению новых записей в таблице банов и логе действий.
Что приведет к появлению одинаковых записей...
 
Мы с первого раза
В этом коде каждое обновление страницы приводит к появлению новых записей в таблице банов и логе действий.
Что приведет к появлению одинаковых записей...
Мы с первого раза очищаем файл кэша банов, и при повторной попытке входа на страницу человеку уже должно показать сообщение о блокировке. Хотя я не тестировал, но можно же добавить логику проверки ip.
 

Пользователи, просматривающие данную тему

Верх