Ответ
Креативная защита контента от абузеров Опции темы
Старый 30.10.2015, 00:33
  #1
Матрос
 
Аватар для Матрос
Регистрация: 26.03.2011
Сообщений: 1,395

Креативная защита контента от абузеров
Сразу скажу для тех кто не читал предыдущую тему http://rebill.me/showthread.php?t=3128 что идея не моя. Себе могу присвоить лишь реализацию плана, который предложили slavegirl и player. Суть состоит в следующем - когда заходит пользователь из "черного списка" абузеров, он видит не сайт а стандартную заставку кемелхоста о том что сайт заблокирован администрацией





Какова реакция для обычного человека - акк заблочен, тут делать больше нечего.

Вчера я давал инструкцию для Vbulletin 3 и 4 серии, и в аську мне тут же начали писать о том что хотят видеть такую же защиту для других популярных движков - Wordpress, DLE И даже Vbulletin 5.

Ну раз желающих много, а я стараюсь всегда идти навстречу клиентам кемелхоста, решено было делать. Сам код не настолько сложен как думается, и вставить его сможет любой, кто хоть приближенно знаком с html.

Чтоб отсеять тех кто будет говорить о задержке работы сайта из-за большого числа айпишников, сразу скажу что проверил сегодня время работы со списком из 10,000 записей на разных ВПС-ах, и время работы скрипта составило всего за 0.004383 секунд. Это просто ничтожная задержка для сайта, которую ни один юзер не заметит. Итак, сама реализация

Первым делом ДЛЯ ЛЮБОГО САЙТА копируем свой список абузеров в файл ips.txt (название лучше выбирать рандомное, известное только вам, и в кодах менять указанное мной имя на свое). Заливаем его в корень сайта и выставляем права на файл 644.

Vbulletin 3.x, 4.x

1.В файл global.php делаем вставку в самом начале

<?
$ip_array 
file("ips.txt");
$ip_array array_map('trim',$ip_array);
$mask_ip explode(".",$_SERVER['REMOTE_ADDR']) ;
$us_mask=$mask_ip[0].".".$mask_ip[1].".".$mask_ip[2].".";
if ( ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) and ($_SERVER['REQUEST_URI'] != '/') )


{
 
header('Location: http://'.$_SERVER['HTTP_HOST'].'/'); 
  exit;
}

?>
2. в файле index.php делаем вставку тоже в самом начале

<?
$ip_array 
file("ips.txt");
$ip_array array_map('trim',$ip_array);
$mask_ip explode(".",$_SERVER['REMOTE_ADDR']) ;
$us_mask=$mask_ip[0].".".$mask_ip[1].".".$mask_ip[2].".";
if ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) {
  echo 
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

<html>
<body bgcolor=\"#FFFFFF\">
<title>Account disabled</title>
<table border=0 width=100% height=100%>
<tr>
    <td align=center><table border=0 cellpadding=0 cellspacing=0 width=300>
    <tr><td bgcolor=#000000><table border=0 cellpadding=3 cellspacing=1 width=300>
    <tr>
        <td align=center bgcolor=#FF0000><font color=#FFFFFF face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Information</b></font></td>
    </tr>
    <tr>
        <td align=center bgcolor=#FFFFFF><font color=#FF0000 face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Account disabled by server administrator.</b></font></td>
    </tr>
    </table></td></tr></table>
    <a href=\"http://ispsystem.com\" target=\"_blank\" style=\"text-decoration: none;\"><font color=#000000 face='Verdana, Arial, Helvetica, sans-serif' size=1>&copy; ISPmanager control panel</font></a>
    </td>
</tr>
</table>
</body>
</html>"
;
  exit();
}
?>
Vbulletin 5.x
Разработчики этой версии упростили нам работу. тут надо делать вставку только в один файл - index.php. Так же в самом начале

 $ip_array file("ips.txt");
$ip_array array_map('trim',$ip_array);
$mask_ip explode(".",$_SERVER['REMOTE_ADDR']) ;
$us_mask=$mask_ip[0].".".$mask_ip[1].".".$mask_ip[2].".";

if ( ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) and ($_SERVER['REQUEST_URI'] != '/') )
{
 
header('Location: http://'.$_SERVER['HTTP_HOST'].'/'); 
  exit;
}


if ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) {
  echo 
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

<html>
<body bgcolor=\"#FFFFFF\">
<title>Account disabled</title>
<table border=0 width=100% height=100%>
<tr>
    <td align=center><table border=0 cellpadding=0 cellspacing=0 width=300>
    <tr><td bgcolor=#000000><table border=0 cellpadding=3 cellspacing=1 width=300>
    <tr>
        <td align=center bgcolor=#FF0000><font color=#FFFFFF face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Information</b></font></td>
    </tr>
    <tr>
        <td align=center bgcolor=#FFFFFF><font color=#FF0000 face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Account disabled by server administrator.</b></font></td>
    </tr>
    </table></td></tr></table>
    <a href=\"http://ispsystem.com\" target=\"_blank\" style=\"text-decoration: none;\"><font color=#000000 face='Verdana, Arial, Helvetica, sans-serif' size=1>&copy; ISPmanager control panel</font></a>
    </td>
</tr>
</table>
</body>
</html>"
;
  exit();

DLE 9.x-10.x

В самом начале index.php

$ip_array file("ips.txt");
$ip_array array_map('trim',$ip_array);
$mask_ip explode(".",$_SERVER['REMOTE_ADDR']) ;
$us_mask=$mask_ip[0].".".$mask_ip[1].".".$mask_ip[2].".";

if ( ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) and ($_SERVER['REQUEST_URI'] != '/') )
{
 
header('Location: http://'.$_SERVER['HTTP_HOST'].'/'); 
  exit;
}


if ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) {
  echo 
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

<html>
<body bgcolor=\"#FFFFFF\">
<title>Account disabled</title>
<table border=0 width=100% height=100%>
<tr>
    <td align=center><table border=0 cellpadding=0 cellspacing=0 width=300>
    <tr><td bgcolor=#000000><table border=0 cellpadding=3 cellspacing=1 width=300>
    <tr>
        <td align=center bgcolor=#FF0000><font color=#FFFFFF face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Information</b></font></td>
    </tr>
    <tr>
        <td align=center bgcolor=#FFFFFF><font color=#FF0000 face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Account disabled by server administrator.</b></font></td>
    </tr>
    </table></td></tr></table>
    <a href=\"http://ispsystem.com\" target=\"_blank\" style=\"text-decoration: none;\"><font color=#000000 face='Verdana, Arial, Helvetica, sans-serif' size=1>&copy; ISPmanager control panel</font></a>
    </td>
</tr>
</table>
</body>
</html>"
;
  exit();

Wordpress 3.x-4.x

Так же как и в ДЛЕ - в index.php в начале файла

$ip_array file("ips.txt");
$ip_array array_map('trim',$ip_array);
$mask_ip explode(".",$_SERVER['REMOTE_ADDR']) ;
$us_mask=$mask_ip[0].".".$mask_ip[1].".".$mask_ip[2].".";

if ( ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) and ($_SERVER['REQUEST_URI'] != '/') )
{
 
header('Location: http://'.$_SERVER['HTTP_HOST'].'/'); 
  exit;
}


if ( (
in_array($us_mask$ip_array) ) or (in_array(@$_SERVER['REMOTE_ADDR'], $ip_array) ) ) {
  echo 
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">

<html>
<body bgcolor=\"#FFFFFF\">
<title>Account disabled</title>
<table border=0 width=100% height=100%>
<tr>
    <td align=center><table border=0 cellpadding=0 cellspacing=0 width=300>
    <tr><td bgcolor=#000000><table border=0 cellpadding=3 cellspacing=1 width=300>
    <tr>
        <td align=center bgcolor=#FF0000><font color=#FFFFFF face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Information</b></font></td>
    </tr>
    <tr>
        <td align=center bgcolor=#FFFFFF><font color=#FF0000 face='Verdana, Arial, Helvetica, sans-serif' size=2><b>Account disabled by server administrator.</b></font></td>
    </tr>
    </table></td></tr></table>
    <a href=\"http://ispsystem.com\" target=\"_blank\" style=\"text-decoration: none;\"><font color=#000000 face='Verdana, Arial, Helvetica, sans-serif' size=1>&copy; ISPmanager control panel</font></a>
    </td>
</tr>
</table>
</body>
</html>"
;
  exit();

Напомню - при этом у вас должен быть уже залит список айпишников абузеров. Список должен иметь формат

127.0.0.1
127.1.0.5
127.3.5.18
Кроме полных айпишников можно втставлять маски из перх первых сегментов

127.0.0.
Если не имеете своего списка, то вот тот что я смог собрать на форуме от разных людей http://rebill.me/showthread.php?p=84874#post84874

Это далеко не последние "сладости" для клиентов http://camelhost.net/. В дальнешем планирую выложить и другие интересные плюшки для защиты вашего контента от сноса. Среди них - работа над плагином шифрования, и дальнейшая реализация его под DLE.

Буду раз выслушать замечания, вопросы и предложения .
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 08:42
  #2
stemp
 
Регистрация: 23.08.2013
Сообщений: 1,153

Ай спасибо!
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 10:25
  #3
zazik
 
Регистрация: 14.05.2012
Сообщений: 651

для wordpress wp-ban чем хуже?...там тоже можно выставить список айпи и по маске и по домену и как угодно и прописать свою застваку
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 11:47
  #4
Матрос
 
Аватар для Матрос
Регистрация: 26.03.2011
Сообщений: 1,395

zazik, ничем. Никто не заставляет юзать плагин. Мой вариант лучше тем что он полностью имитирует блокировку домена - с редиректом на главную сайта. Я бы и не делал, но меня попросили дать вариант для ВП, хотя я писал в теме про этот плагин
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 12:19
  #5
Leming
 
Регистрация: 31.03.2011
Сообщений: 583

Тема нужная. Спасибо.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 12:20
  #6
zazik
 
Регистрация: 14.05.2012
Сообщений: 651

не я просто спросил в чем может быть разница.....
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 15:26
  #7
sergo
 
Аватар для sergo
Регистрация: 07.10.2013
Сообщений: 275

Матрос спасибо большое!!!
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 15:36
  #8
miraida
 
Аватар для miraida
Регистрация: 11.02.2012
Сообщений: 2,241

Так, на заметку.
Если сайт работает под Клоудфларе, то данный метод будет бесполезен. Клара использует свой набор айпишников - по сути она является проксей.

Плюс клары - защита от ддоса, снижение нагрузки на сервер и снижение трафика путем кеширования на самой кларе.

Минусы - невозможность банить по ип адресу, от абуз не защищает - автоматом абузы перенаправляются вашему хостеру или в дц.

Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 18:06
  #9
Матрос
 
Аватар для Матрос
Регистрация: 26.03.2011
Сообщений: 1,395

miraida, т.е. Клоудфларе изменяет айпишники посетителей?
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 30.10.2015, 18:15
  #10
stemp
 
Регистрация: 23.08.2013
Сообщений: 1,153

Сообщение от Матрос Посмотреть сообщение
т.е. Клоудфларе изменяет айпишники посетителей?
ничё они не меняют. Мираида полез в тему, в которой не разбирается, но ляпнуть хочется.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием

Ответ
 
 

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Progslinks.com - защита от абуз + вкусности progsfiles.com Файлообмен 45 27.07.2015 17:19
Защита и помощь в заработке на скачиваниях 4as Файлообмен 4 18.09.2014 00:51
Защита ссылок и продажи Webnoob Файлообмен 2 02.05.2013 10:22
Защита ссылок с помощью сайта wcrypt.com AC/DCbest Сервисы 1 16.12.2012 21:03
Защита статей от воровства [wordpress] Sonik666 Вопросы 9 05.07.2012 13:07

Метки
абузы, защита, шифрование


Здесь присутствуют: 1 (пользователей: 0, гостей: 1)
 
Опции темы

Быстрый переход


Текущее время: 15:22. Часовой пояс GMT +3.