Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Хитрости при программировании php, заметки по базам данных

Защита сайта. Блокировка ip адреса

Источник: realcoding.net

Сейчас в интернете очень активно спамят посещаемые и не очень интернет-ресурсы различных направлений и тематик. Несмотря на множество всевозможных способов защиты, расположенных на большинстве сайтов, спамеров остановить не всегда получается. Иногда они вручную или в полуавтоматическом режиме заполняют формы в гостевых, форумах, комментариях…, причем настолько нагло рекламируют себя или свой сайт, что диву даешься от их беспринципности. И от таких посягательств на "чистоту" вашего контента, а как следствие и сайта в целом, зачастую спасает только блокировка ip адреса спамера. На мой взгляд, блокировка по ip – очень эффективный метод борьбы со спамом, но применять его можно только в крайних случаях, например, когда с одного и того же ip вас спамили больше двух-трех раз. Использовать этот метод нужно крайне осторожно, дабы случайно не закрыть доступ к вашему сайту для поисковых машин, которые составляют основную часть трафика любого сайта.

В этой статье рассмотрен простейший php-скрипт, который имеет два уровня защиты сайта: предупреждение спамера о том, что ему не поздоровится, если он еще раз наспамит и полная блокировка доступа к сайту по ip. Единственным минусом блокировки по ipявляется то, что спамер может пользоваться бесплатным и общедоступным прокси-сервером, и если забаннить сервер с этим ip, то к вашему сайту не смогут получить доступ и те, кто использует его исключительно в мирных целях. Поэтому прежде чем банить смотрите, кто есть кто через сервис whois.

А вот и сам php-код простейшего скрипта для блокировки пользователя по ip:

<?php
/* http://wm-help.net/ */
/* Сообщение при банне ip */
define(bann_message, Для вашего IP: %ip% доступ к сайту закрыт.);

/* Предупреждение о возможности банна по ip */
define(wrong_message, Вы предупреждены администратором данного сайта о возможной блокировке вашего IP: %ip% в случае дальнейшего нарушения правил.);

/* массив с ip и типом блокировки. в ключе массива IP, в значении тип блокировки */
$bann_array = array(
                   
195.66.203.247=>bann, // реальный плохой IP
                   
220.94.220.60=>bann// реальный плохой IP
                    //127.0.0.1=>wrong      // Test
                   
);

/* Функция для почти 100% определения IP адреса посетителя. */
/* Перебирает все возможные переменные с IP. */
function _ip()
{
  if(isset(
$HTTP_SERVER_VARS)) {
    if(isset(
$HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR])) {
   
$realip = $HTTP_SERVER_VARS[HTTP_X_FORWARDED_FOR];
    }elseif(isset(
$HTTP_SERVER_VARS[HTTP_CLIENT_IP])) {
      
$realip = $HTTP_SERVER_VARS[HTTP_CLIENT_IP];
    }else{
      
$realip = $HTTP_SERVER_VARS[REMOTE_ADDR];
    }
  }else{
  if(
getenv( HTTP_X_FORWARDED_FOR ) ) {
   
$realip = getenv( HTTP_X_FORWARDED_FOR );
  }elseif (
getenv( HTTP_CLIENT_IP ) ) {
   
$realip = getenv( HTTP_CLIENT_IP );
  }else {
   
$realip = getenv( REMOTE_ADDR );
  }
}
return
$realip;
}

/* Определяет, что делать с владельцем того или иного ip адреса */
function bann_on_not_to_bann()
{
    global
$bann_array; // получаем массив с ip адресами
   
$user_ip = _ip();   // получаем ip

/* разбираем массив на ключ и значение */
foreach($bann_array as $ip=>$type)
{
    if (
$ip == $user_ip) // проверяем
   
{
        switch(
$type) // если ip совпал то смотрим что делать
       
{
            case
wrong: // предупреждение
            
{
                echo
str_replace(%ip%, $user_ip, wrong_message); // выводим предупреждение
               
break; // выход из switch
            
}
            case
bann: // блокировка
            
{
                die(
str_replace(%ip%, $user_ip, bann_message)); // Сообщение о том, что доступ закрыт + завершение работы php
                // break не требуется т.к. дальше уже ничего не выполняется
            
}
        }
    }
}
}

/* проверяем владельца ip и блокируемпредупреждаем если это спамер */
bann_on_not_to_bann();
?>

Для того, чтобы использовать данный скрипт блокировки ipадресов создайте php-файл ip_bann.php и поместите в него весь код скрипта, который вы видите выше. Затем в самом начале основного скрипта, обычно это index.php допишите строчку:
include ip_bann.php;

Так же этот php-скрипт можно использовать для блокировки ip непосредственно в скриптах отвечающих за добавление сообщений пользователей на ваш сайт, а не повсеместно, данный вариант иногда бывает даже лучше.



Похожие статьи:
- Выбор ключевых слов
- Что такое Ruby on Rails 1.0?
- fror = flex + ruby on rails
- Как зашифровать HTML-код веб-страницы
- Собственная статистика поисковых слов (Яндекс, Рамблер, Google,...) на PHP
- Класс для создания меню навигации на сайте
- Drag & Drop на AJAX
- Интернет-раскрутка: с чего начинать?
- Защита сайта от спамеров с использованием PHP. Практическое применение кода подтверждения с картинки
- PHP5 - Новые возможности PHP5-Zend Engine 2_0
- Введение в PHP5
- Создание гостевой книги
- Постраничный вывод из MySQL


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.001]