Хак Ещё один способ защиты от СПАМа!

Тема в разделе "DLE", создана пользователем Laif, 13 апр 2009.

Информация :
Актуальная версия DataLife Engine 12.0
( Final Release v.12.0 | Скачать DataLife Engine | Скачать 12.0 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.3 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Laif

    Laif Постоялец

    Регистр.:
    8 дек 2007
    Сообщения:
    114
    Симпатии:
    22
    1) Версия ДЛЕ 7.х
    2) Как нулл так и лицензия

    В DLE есть такая прекрасная опция, которая помогает запретить пользователям использование кликабельных ссылок в комментариях и профиле (в поле "О себе:"). Но при таком запрете в комментариях и в профиле все равно остаются ссылки.
    Например:
    PHP:
    [url=http://spamsitexxx]мой блог![/url]
    Да они уже не кликабельные, но адреса тех сайтов остались. Это можно легко решить, а вернее сделать так чтобы в следующий раз пользователь не смог добавить такие ссылки.

    Не хотелось бы сразу загружать вас кодом плюсы и минусы которого вы не знаете:
    + Это помогает избавиться от надоедливых комментариев со СПАМом.
    - Даже не кликабельные ссылки пользователю нельзя будет добавить.
    + Это существенно с экономит ваше время на проверке комментариев и пользователей.
    + Администрация сайта, а верней администратор и главный редактор исключение. Они могу легко добавлять ссылки.

    = Этот хак подходит для развлекательных сайтов и других ресурсов где ссылки в комментариях не нужны.

    Ну что ж пора преступать к установке!

    1. Зайдите в engine/modules/register.php
    Найдите:
    Код:
    if (strlen($icq) > 20) $stop .= $lang['reg_err_17'];
    После вставьте:
    Код:
    if (strstr($info, "[url") or strstr($info, "&lt;a") or strstr($info, "href") or strstr($info, "http:") or strstr($info, "www.") or strstr($info, ".net") or strstr($info, ".su") or strstr($info, ".ru") or strstr($info, ".com") or strstr($info, ".ws") or strstr($info, ".lv") or strstr($info, ".ua")){
               $stop .= $lang['reg_err_24'];
            }
    
    2. Зайдите в engine/modules/addcomments.php
    Найдите:
    Код:
    if ($comments ==''){
            $stop[] = $lang['news_err_11'];
            $CN_HALT = TRUE;
        }
    
    После вставьте:


    Код:
     if ($member_id['user_group'] > 2){
        if (strstr($comments, "[url") or strstr($comments, "&lt;a") or strstr($comments, "href") or strstr($comments, "http:") or strstr($comments, "www.") or strstr($comments, ".net") or strstr($comments, ".su") or strstr($comments, ".ru") or strstr($comments, ".com") or strstr($comments, ".ws") or strstr($comments, ".lv") or strstr($comments, ".ua"))
        {
            $stop[] = $lang['news_err_30'];
            $CN_HALT = TRUE;
        }
        }
    
    3. Зайдите в engine/modules/profile.php
    Найдите:

    Код:
    if (strlen($info) > 1000)
        {
            
                $stop .= $lang['news_err_22'];
        }
    После вставьте:


    Код:
    if ($member_id['user_group'] > 2){
        if (strstr($info, "[url") or strstr($info, "&lt;a") or strstr($info, "href") or strstr($info, "http:") or strstr($info, "www.") or strstr($info, ".net") or strstr($info, ".su") or strstr($info, ".ru") or strstr($info, ".com") or strstr($info, ".ws") or strstr($info, ".lv") or strstr($info, ".ua"))
        {
            
                $stop .= $lang['reg_err_24'];
        }
        if (strstr($signature, "[url") or strstr($signature, "&lt;a") or strstr($signature, "href") or strstr($signature, "http:") or strstr($signature, "www.") or strstr($signature, ".net") or strstr($signature, ".su") or strstr($signature, ".ru") or strstr($signature, ".com") or strstr($signature, ".ws") or strstr($signature, ".lv") or strstr($signature, ".ua"))
        {
            
                $stop .= $lang['user_err_01'];
        }
        }
    
    4. Зайдите в engine/ajax/editcomments.php
    Найдите:

    Код:
    if( $comm_txt == ""){
    
            die ("error");
    
        }
    После вставьте:


    Код:
     if ($member_id['user_group'] > 2){
        if (strstr($comm_txt, "[url") or strstr($comm_txt, "&lt;a") or strstr($comm_txt, "href") or strstr($comm_txt, "http:") or strstr($comm_txt, "www.") or strstr($comm_txt, ".net") or strstr($comm_txt, ".su") or strstr($comm_txt, ".ru") or strstr($comm_txt, ".com") or strstr($comm_txt, ".ws") or strstr($comm_txt, ".lv") or strstr($comm_txt, ".ua"))
        {
            die("error");
        }
        }

    5. Зайдите в language/ВАШ ЯЗЫК/website.lng
    Найдите:

    Код:
    'reg_err_18'    =>    "Внимание, обнаружена ошибка",
    
    После вставьте:

    Код:
    'reg_err_24'    =>    "Внимание, обнаружена ошибка! В поле 'О себе:' не могут содержаться какие либо ссылки!",
    'user_err_01'    =>    "Внимание, обнаружена ошибка! В поле 'Подпись:' не могут содержаться какие либо ссылки!",
    Найдите:

    Код:
    'news_err_29'        =>    "Добавление комментариев для данной новости запрещено.",
    После вставьте:

    Код:
    'news_err_30'        =>    "Ошибка! Ваш комментарий не может быть добавлен из за возможного содержания в нем СПАМа.",
    В 7.5 в 3-м пункте, надо искать не это

    Код:
    if (strlen($info) > 1000)
    {
    
    $stop .= $lang['news_err_22'];
    }

    а вот это

    Код:
    if( intval( $user_group[$member_id['user_group']]['max_info'] ) > 0 and strlen( $info ) > $user_group[$member_id['user_group']]['max_info'] ) {
    
    $stop .= $lang['news_err_22'];
    }
    Взял с 4dle, думаю будет полезно.
     
    and77st нравится это.
  2. SSERAPHIM

    SSERAPHIM Читатель

    Заблокирован
    Регистр.:
    28 сен 2007
    Сообщения:
    71
    Симпатии:
    23
    А при следующем апгрейде движка это всё не слетит? Будут ли изменены эти коды в новой версии dle по умолчанию (в 7.6 например)?
     
  3. Laif

    Laif Постоялец

    Регистр.:
    8 дек 2007
    Сообщения:
    114
    Симпатии:
    22
    ну во-первых следующая будет 8.0 странно что вы этого не знаете.
    А во-вторых - да слетит, больше того, вероятно что код версии 8.0 будет сильно отличаться от существующего (API) - Информация есть на офф. сайте
     
  4. kostyk

    kostyk Создатель

    Регистр.:
    23 апр 2007
    Сообщения:
    21
    Симпатии:
    3
    Обязательно слетит! А может подождать релиза 8-й наверняка там будут какие-либо новшества по защите от спама!
     
  5. Germango

    Germango

    Регистр.:
    25 авг 2008
    Сообщения:
    153
    Симпатии:
    27
    сам давно использую этот метод, всем советую.
    единственным минусом считаю, что нет доверенных групп - кому можно оставлять ссылки в комментах, а кому нет, т.к. сам админ потом прокомментировать с кликабельными ссылками не сможет.
     
Статус темы:
Закрыта.