Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
SysOp
 Аватар для IamSCORPION
42 / 41 / 5
Регистрация: 13.04.2009
Сообщений: 274

Защита от спама

13.03.2011, 20:44. Показов 2781. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Начиная с сегодняшнего дня у меня на сайте начал появляться спам от бота. Использую капчу, но это не помогло. Сначала он спамил в комментариях, но когда я их отключил(от греха подальше), он взялся за обратную связь.

Рассылает сообщения следующего содержания

Вот его действия

Я никогда с этим не сталкивался и не знаю что делать. Подскажите мне неопытному как избавиться от этой гадости. Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2011, 20:44
Ответы с готовыми решениями:

Защита от спама
Здравствуйте, мне понравилась система защита от спама как в контакте. И мне было бы интересно узнать как устроен файл 'away.php'.

Защита сайта от спама
Всем привет! Сайту уже более 3 лет и до недавнего времени проблем со спамом не возникало, но видимо при раскрутке сайта или по иным...

Защита от спама и флуда
Есть форма на сайте, которая отправляем методом "POST" данные в файл send.php, а он уже их обрабатывает, опправляет на почту и сохраняет в...

9
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.03.2011, 21:15
покажи как данные передаются в БД
0
SysOp
 Аватар для IamSCORPION
42 / 41 / 5
Регистрация: 13.04.2009
Сообщений: 274
13.03.2011, 21:19  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
покажи как данные передаются в БД
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
...
if(isset($_POST['toadmin_submit']) && isset($_POST['toadmin_username']) && isset($_POST['toadmin_useremail']) && isset($_POST['toadmin_text']) && isset($_POST['toadmin_captcha']))
{
    $toadmin_result = "";
    if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == trim($_POST['toadmin_captcha']))
    {
        $toadmin_username = mysql_real_escape_string(trim($_POST['toadmin_username']));
        $toadmin_useremail = mysql_real_escape_string(trim($_POST['toadmin_useremail']));
        $toadmin_text = mysql_real_escape_string(trim($_POST['toadmin_text']));
        if(!empty($toadmin_username) && !empty($toadmin_useremail) && !empty($toadmin_text))
        {
            if(isValidEmail($toadmin_useremail))
            {
                mysql_query("INSERT INTO toadmin (toadmin_username, toadmin_useremail, toadmin_text, toadmin_ip) VALUES('".$toadmin_username."', '".$toadmin_useremail."', '".$toadmin_text."', '".getIp()."')") or die(db_getError());
                $toadmin_result  = "Сообщение администратору успешно отправлено.";
            }
            else
            {
                $toadmin_result = "Ошибка! Введенный Вами e-mail не похож на настоящий.";
            }
        }
        else
        {
            $toadmin_result = "Ошибка! Заполните все поля.");
        }
    }
    else
    {
        $toadmin_result = "Ошибка! Вы не верно ввели код с картинки! Вы бот?";
    }
}
...
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.03.2011, 21:39
смари, есть не мной придуманная вешь
PHP
1
2
3
4
    $is_spam = false;
 
    $is_spam = $is_spam && ereg("<html>|<body|<script|<a|<table|<td|<th|<tr|<img|width=|height=|src=|url=|http:\/\/|ftp:\/\/|https:\/\/|href=|fuck|******|sex|javascript|language=",
        $title);
здесь, как ты понимаешь, вместо $title -- должны быть значения из твоих полей (т.е. все значения массива $_POST ($_REQUEST))

Добавлено через 7 минут
а здесь я добавляю ф-ю sprintf()
PHP
1
2
3
4
5
6
7
$query = "INSERT INTO toadmin (toadmin_username, toadmin_useremail, toadmin_text, toadmin_ip) VALUES('%s', '%s', '%s', '%s')"
 
$query_insert = sprintf($query,
                          $toadmin_username, $toadmin_useremail, $toadmin_text, getIp()
                          );
 
$result = mysql_query($query_insert) or die(db_getError());
что за ф-я getIp()?
1
SysOp
 Аватар для IamSCORPION
42 / 41 / 5
Регистрация: 13.04.2009
Сообщений: 274
13.03.2011, 21:48  [ТС]
Love_and_Peace
Окау. Сделал пока так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
function isSpam($arraydata)
{
    for($i = 0; $i < sizeof($arraydata); $i++)
    {
        $is_spam = ereg("<html>|<body|<script|<a|<table|<td|<th|<tr|<img|width=|height=|src=|url=|http:\/\/|ftp:\/\/|https:\/\/|href=|fuck|******|sex|javascript|language=", $arraydata[$i]);
        if($is_spam)
        {
            echo "<div style=\"color:gray; font:25px Verdana, Arial, Helvetica, sans-serif; padding-top:100px;\"><center>Ваше сообщение очень похоже на спам! Не используйте html-теги!</center></div>";
            exit();
        }
    }
}
...
isSpam(array($toadmin_username, $toadmin_useremail, $toadmin_text));
...
Но, как по мне, это не выход из ситуации.


что за ф-я getIp()?
Для опредилення ip
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function getIp()
{
    if(isset($_SERVER)) 
    {
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
        {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        } 
        else if(isset($_SERVER['HTTP_CLIENT_IP'])) 
        {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } 
        else 
        {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
    } 
    else 
    {
        if(getenv('HTTP_X_FORWARDED_FOR')) 
        {
            $ip = getenv('HTTP_X_FORWARDED_FOR');
        } 
        else if(getenv('HTTP_CLIENT_IP')) 
        {
            $ip = getenv('HTTP_CLIENT_IP');
        } 
        else 
        {
            $ip = getenv('REMOTE_ADDR');
        }
    }
    
    return $ip;
}
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.03.2011, 22:08
это максимум защиты которую я использую, есть над чем подумать
Цитата Сообщение от IamSCORPION Посмотреть сообщение
Использую капчу, но это не помогло
чесна говоря не понимаю как он обходит капчу.

Добавлено через 2 минуты
вообще как я знаю, сочетание sprintf() c mysql_real_escape_string() должны хорошо защищать БД
0
SysOp
 Аватар для IamSCORPION
42 / 41 / 5
Регистрация: 13.04.2009
Сообщений: 274
13.03.2011, 22:08  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
чесна говоря не понимаю как он обходит капчу.
Для меня это также остается загадкой. Использую kcaptcha.
Огромное спасибо! Пока предложенный тобой вариант решения проблемы работает
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.03.2011, 22:15
эт те в данный момент прислали спам или твоя проверка?
0
SysOp
 Аватар для IamSCORPION
42 / 41 / 5
Регистрация: 13.04.2009
Сообщений: 274
13.03.2011, 22:18  [ТС]
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
эт те в данный момент прислали спам или твоя проверка?
В данный момент. Оставлю до утра вывод этого сообщения об ошибке, чтобы увидеть результаты
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
13.03.2011, 22:27
у меня защита формы так начинается
PHP
1
2
3
4
5
6
7
if (здесь условие проверяющее задана ли капча) {
        if (если не спам (в твоем случае -- !(вывод значения ф-ии isSpam))) {
 
               // ну а здесь заполнение формы со всеми описанными ф-ми
 
        }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2011, 22:27
Помогаю со студенческими работами здесь

Защита от спама
Хочется по обсуждать на данную тему, быть может найду какое то оптимальное решение. Капчу можно не обсуждать, считаю ее злом, так как...

Защита от спама
Добрый день, посоветуйте какую защиту от спама лучше использовать для сайта и форм комментариев ? желательно такую чтобы нельзя было...

Защита формы от спама
Ребят, всем привет. Решил защитить форму сайта от спама и нашёл в интернете интересный способ, который меня устроил. Суть...

Защита от спама
Всем доброго времени суток, решила я значит сделать popup c формой обратной связи. Все хорошо работает, форма примитивная Но спустя сутки...

Защита от спама
Приветствую! Подскажите пожалуйста: как избавится от вставки ссылок в форму обратной связи. Запретил вставку ссылок в коменты, о себе и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru