[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема со спамом! Срочно!
vladamir
Здрасти мегамозги! Капец, у меня проблема нарисовалась. Атакуют спам-боты, капчу ставить не хочу, а народные методы "контрацепции" почему-то вообще игнорируются спамером! Вот мой сайт - каталог сайтов, сделан на CI. Народные методы я имею виду типа stip_tags ваще не работает! Даже ссылки из описания не удаляет. Чо за фигня? обработчик создания сайта только один, другого способа к модели подобраться вроде нету. Подскажите, кто знает.. защита стоит родная - validation_form
andrey888
ДАнные из формы куда ? в БД ? а далее на сайт ? ..
Что боты ставят ? скрипты ?

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
vladamir
Данные из формы соотвественно в обработчик -> если валидацию прошли -> в модель -> в модели делаем новую запись в БД. Потом отображаем сайты на сайте smile.gif. Ну обычной выборкой.
Боты оставляют фигню.Спам то есть. Ну вот типа http://vlamir.ru/category/coding/site_5893
вот тут видно что ссылки в описании есть, хотя валидатор лквидирует (ручками когда добавляешь то ссылку улетучиваются), а вот как бот обходит все это. Не могу додуматься!!
vladamir
Ну я сейчас на вывод из базы обрезание тегов то поставил, но это не дело!! В базу то поступают с тегами! Как еще может добавляться в БД записи, если он походу мимо моей модели идет. Напрямую через СУБД может? Как можно определить источник зла??
vladamir
Ну где вы, боги криптологии! :)
Вообщем, исследования мои показали, что путь один только у бота, это через функцию в модели, так как я её когда закомментил, то спам остановился.

Вот функция в модели, которая добавляет запись:
  function add_site($data, $category_alias)
{
$data = check_arr($data);
if ($this->db->insert('site', $data)) {
$category_name = $this->category_model->get_category_by_param("alias", $category_alias, "name");
$id = $this->db->insert_id();
$subject = "Ваш сайт успешно добавлен в каталог vlamir.ru!";
$message = "
<p><h1>Поздравляем, вас сайт успешно добавлен в бесплатный каталог сайтов <a href='"
. site_url() . "'>vlamir.ru</a></h1></p>
<p>Ваш сайт будет находиться на странице <a href='"
. site_url("category/{$category_alias}/site_{$id}") . "'>{$data['title']}</a></p>

<p><b>Название: </b><a href='"
. site_url() . "category/{$category_alias}/site_{$id}'>{$data['title']}</a></p>
<p><b>Адрес: </b>
{$data['url']}</p>
<p><b>Описание: </b>
{$data['description']}</p>
<p><b>Категория: </b>
{$category_name}</p>

<p>Если у вас возникнут вопросы, то мы рады будем на них ответить. Присылайте свои вопросы на почту <a href='mailto:support@vlamir.ru'>службы поддержки</a>"
;
send_email($subject, $message, $data['email']);
return $id;
}
}


функция check_arr: Это уже вторая проверка на символы, первая на входе в контроллер обработчик. Но если думаю даже там проходит, то тут почему! Как можно обойти вот эту строчку! $data = check_arr($data);

function check_input($var)
{
$var = strip_tags($var);
$var = htmlspecialchars(stripslashes($var));
$var = mysql_real_escape_string($var);
$var = trim($var);
return $var;
}
function check_arr($data)
{
foreach ($data as $index => $item) {
$data[$index] = check_input($item);
}
return $data;
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.