Инструменты пользователя

Инструменты сайта


software:development:demo:cms:ucms:appendix:appendix_blacklist

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
software:development:demo:cms:ucms:appendix:appendix_blacklist [2026/02/12 22:19] VladPolskiysoftware:development:demo:cms:ucms:appendix:appendix_blacklist [2026/02/14 23:26] (текущий) – [spam_list.txt] VladPolskiy
Строка 12: Строка 12:
  
 <code txt spam_list.txt> <code txt spam_list.txt>
-192.168.1.1 +dead 
-10.0.0.5 +fuck
-172.16.0.100+
 </code> </code>
  
Строка 32: Строка 31:
  
     // Собираем данные формы (например, комментарий)     // Собираем данные формы (например, комментарий)
-    $comment = $_POST['message'] ?? '';+    $comment = $_POST['username'] ?? '';
  
     // Проверяем данные на наличие спама     // Проверяем данные на наличие спама
Строка 48: Строка 47:
 </code> </code>
  
 +=== block_spam_test.php ====
 +<code php block_spam_test.php>
 +<form action="block_spam.php" method="POST">
 +    <input type="text" name="username">
 +    <input type="submit" value="ok">
 +</form>
 +
 +<?php
 +if ($_SERVER["REQUEST_METHOD"] == "POST") {
 +    // Получаем и выводим данные
 +    $name = $_POST['username'];
 +    echo "Введенное имя: " . htmlspecialchars($name);
 +}
 +?>
 +</code>
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_8.png?|}}</note>
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_9.png?|}}</note>
 +Ввведем слово из спам листа
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_10.png?|}}</note>
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_11.png?|}}</note>
 ===== User-Agent (Проверка Ботов) ===== ===== User-Agent (Проверка Ботов) =====
 Блокировка ботов в PHP осуществляется путем проверки строки User-Agent в запросе $ _SERVER['HTTP_USER_AGENT'] и прерывания выполнения скрипта, если обнаружен вредоносный робот. Для защиты рекомендуется использовать массив известных ботов, проверять их в начале файла (например, через хук) и использовать die() или exit() для закрытия доступа.  Блокировка ботов в PHP осуществляется путем проверки строки User-Agent в запросе $ _SERVER['HTTP_USER_AGENT'] и прерывания выполнения скрипта, если обнаружен вредоносный робот. Для защиты рекомендуется использовать массив известных ботов, проверять их в начале файла (например, через хук) и использовать die() или exit() для закрытия доступа. 
Строка 95: Строка 114:
 ===== Блокировка по IP ===== ===== Блокировка по IP =====
 ==== block.php ==== ==== block.php ====
-<code php block.php>+<code php block_ip.php>
 <?php <?php
 // Путь к файлу черного списка // Путь к файлу черного списка
 $blacklistFile = 'blacklist.txt'; $blacklistFile = 'blacklist.txt';
 +
 +
 +// Зададим функцию получения значения IP адреса
 +function get_ip_list()
 +{
 + $list = array();
 + if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
 + $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 + $list = array_merge($list, $ip);
 + } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
 + $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 + $list = array_merge($list, $ip);
 + } elseif (!empty($_SERVER['REMOTE_ADDR'])) {
 + $list[] = $_SERVER['REMOTE_ADDR'];
 + }
 + $list = array_unique($list);
 + return implode(',', $list);
 +}
  
 // Получаем IP посетителя // Получаем IP посетителя
-$visitorIp = $_SERVER['REMOTE_ADDR'];+$visitorIp = get_ip_list(); 
 +// Выводим IP посетителя 
 +echo $visitorIp; 
 +echo "<br/>";
  
 // Читаем файл в массив, удаляя переносы строк // Читаем файл в массив, удаляя переносы строк
 if (file_exists($blacklistFile)) { if (file_exists($blacklistFile)) {
     $blacklist = file($blacklistFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);     $blacklist = file($blacklistFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 +
     // Проверяем, есть ли IP в списке     // Проверяем, есть ли IP в списке
-    if (in_array($visitorIp, $blacklist)) {+ // Фильтрация по диапазону 
 + // 185.219.157.127 // Отдельный IP 
 + // 185.219.*.127  // Диапазон (все IP, начинающиеся с этого) 
 + foreach ($blacklist as $blocked_ip) { 
 +    // Преобразуем маску с * в регулярное выражение 
 +    $pattern = '/^' . str_replace(['.', '*'], ['\.', '.*'], $blocked_ip) . '$/'; 
 +     
 +    if (preg_match($pattern, $visitorIp)) {
         header('HTTP/1.0 403 Forbidden');         header('HTTP/1.0 403 Forbidden');
         die('Доступ запрещен.');         die('Доступ запрещен.');
     }     }
 + }
 } }
- 
 // ... остальной код сайта // ... остальной код сайта
 echo "Добро пожаловать!"; echo "Добро пожаловать!";
Строка 124: Строка 171:
 10.0.0.5 10.0.0.5
 172.16.0.100 172.16.0.100
 +185.219.157.127
 </code> </code>
 Проверяем браузер Проверяем браузер
 <note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_8.png?|переход страниц}}</note> <note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_8.png?|переход страниц}}</note>
 +
 +<code txt blacklist.txt>
 +192.168.1.1
 +10.0.0.5
 +172.16.0.100
 +185.219.157.128
 +</code>
 +Проверяем браузер
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_9.png?|переход страниц}}</note>
 +
 +<code txt blacklist.txt>
 +192.168.1.1
 +10.0.0.5
 +172.16.0.100
 +185.219.157.*
 +</code>
 +Проверяем браузер
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_10.png?|переход страниц}}</note>
 ===== Дополнения и Файлы ===== ===== Дополнения и Файлы =====
   * {{ :software:development:demo:cms:ucms:appendix:blacklist.txt |}}   * {{ :software:development:demo:cms:ucms:appendix:blacklist.txt |}}
software/development/demo/cms/ucms/appendix/appendix_blacklist.1770923978.txt.gz · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki