Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Randomimage. Боты научились обходить защиту. Как изменить алгоритм?
 
 автор: provodnik   (23.05.2007 в 17:37)   письмо автору
 
 

Доброго времени суток. На своем сайте успешно использую скрипт, любезно предоставленный SoftTime для защиты от автоматической работы ботов, описанный на странице http://softtime.ru/info/randomimage.php.
К сожалению, с недавних пор (дня 4-5) начали появляться материалы на сайте, на 99% похожие на работу ботов: html код (ссылки, выравнивание...), ихние "ключевые слова" - виагра, секс и т.п.
Несуществующие e-mail адреса...
Подскажите, как можно изменить алгорить работы кода, что бы огородить от автопостинга?

Спасибо за советы.

   
 
 автор: coloboc66   (23.05.2007 в 17:46)   письмо автору
 
   для: provodnik   (23.05.2007 в 17:37)
 

Разве это в ПРИНЦИПЕ возможно, чтобы "боты" научились обходить рисунки???!!!

   
 
 автор: Artem S.   (23.05.2007 в 17:52)   письмо автору
 
   для: coloboc66   (23.05.2007 в 17:46)
 

Да.

   
 
 автор: coloboc66   (23.05.2007 в 17:58)   письмо автору
 
   для: Artem S.   (23.05.2007 в 17:52)
 

А каким образом?

   
 
 автор: kasmanaft   (23.05.2007 в 19:03)   письмо автору
 
   для: coloboc66   (23.05.2007 в 17:58)
 

Путем анализа картинки... человек ведь как-то различает что там написано, почему этому нельзя научить машину?
http://captcha.ru/breakings/

   
 
 автор: Trianon   (23.05.2007 в 18:10)   письмо автору
 
   для: provodnik   (23.05.2007 в 17:37)
 

почему Вы уверены что это боты? Может - люди?

   
 
 автор: coloboc66   (24.05.2007 в 09:28)   письмо автору
 
   для: Trianon   (23.05.2007 в 18:10)
 

Не - по всему чувствуется, что не люди. Мой сайт - русскоязычный, совсем не отличается высокой посещаемостью, зато гостевая книга (скачана с softtime.ru) бьет все рекорды по посещаемости. В среднем по 10 записей в сутки, все записи (одни "УРЛ-ы") на английском, и только виагра, секс и т.п. Хоть ты вообще эту книгу закрывай. Может, определять диапазон IP и запрещать обращение к странице с не СНГ-шного IP?

   
 
 автор: cheops   (24.05.2007 в 10:40)   письмо автору
 
   для: coloboc66   (24.05.2007 в 09:28)
 

Да просто запретите URL в теле сообщения гостевой книги - не будет ни одного спам-сообщения.

   
 
 автор: provodnik   (24.05.2007 в 10:47)   письмо автору
 
   для: cheops   (24.05.2007 в 10:40)
 

Мне не подходит такой вариант, когда я вырежу все URL, а остальной бред останется. ИМХО спамом считаю не только ссылки, но и любые данные, не относящиеся к тематике страницы...

   
 
 автор: cheops   (24.05.2007 в 10:56)   письмо автору
 
   для: provodnik   (24.05.2007 в 10:47)
 

Вам за раз наверняка помещают ссылок 10-20 - поставьте ограничение на 5 ссылок, увеличив значение 1 до 5 в блоке кода из поста от 24.05.2007 в 10:46.

   
 
 автор: provodnik   (24.05.2007 в 10:35)   письмо автору
 
   для: Trianon   (23.05.2007 в 18:10)
 

Уважаемый Trianon, к Вашему мнению я особо прислушиваюсь.
Мне кажется, если бы это были люди, то они бы были сначала образования сайта, и были бы везде (на форуме, доске объявлений и т.п.).
Я имею ввиду в таком проявлении:
---------------------------
<a href="http://ua/#viagra">buy viagra</a> buy viagra <a href="http://ua/#viagra">cheap viagra</a> cheap viagra <a href="http://ua/#viagra">order viagra online</a> order viagra online <a href="http://ua/#viagra">purchase viagra</a> purchase viagra <a href="http://ua/#viagra">viagra prescription</a> viagra prescription <a href="http://ua/#viagra">viagra online</a> viagra online <a href="http://ua/#cialis">order cialis</a> order cialis
-----------------------------
И т.п.
Только из этих соображений я решил, что это робот...

   
 
 автор: cheops   (24.05.2007 в 10:46)   письмо автору
 
   для: provodnik   (24.05.2007 в 10:35)
 

Вам URL нужны в гостевой книге? Если нет, просто запретите их размещать
<?php
      $number 
preg_match_all("|<a[\s]+href=[^>]+>[^<]+<|is",$_POST['msg']);
      if(
$number 1) exit();
      
$number preg_match_all("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",$_POST['msg']);
      if(
$number 1) exit();
?>

   
 
 автор: Trianon   (24.05.2007 в 11:46)   письмо автору
 
   для: provodnik   (24.05.2007 в 10:35)
 

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

А регистрация у Вас на портале есть?

   
 
 автор: provodnik   (24.05.2007 в 11:57)   письмо автору
 
   для: Trianon   (24.05.2007 в 11:46)
 

Нет, регистрации нет. Я веду речь о доске объявлений на своем сайте.
ИМХО регистрация доставляет дополнительные неудобства при обычном желании запостить объявление. Я сужу по себе.

   
 
 автор: Trianon   (24.05.2007 в 12:13)   письмо автору
 
   для: provodnik   (24.05.2007 в 11:57)
 

Если доска - тогда конечно.
Хотя и доски бывают с регистрацией,... но в целом Вы правы.
Для одного объявления регистрация отталкивает.

   
 
 автор: Киналь   (24.05.2007 в 09:56)   письмо автору
 
   для: provodnik   (23.05.2007 в 17:37)
 

Поставьте другую картинку-captcha, посложнее. Или сами напишите. Все равно надежнее картинки в том или ином виде ничего пока не придумали.

   
 
 автор: provodnik   (24.05.2007 в 10:37)   письмо автору
 
   для: Киналь   (24.05.2007 в 09:56)
 

Уважаемый Киналь, если бы я сам мог написать, то написал бы и не создавал данную тему.
Данный скрипт очень удобен и практичен. Я долго его использую...

Тем не менее вопрос открыт: Как изменить алгоритм работы кода?

Заранее спасибо...

   
 
 автор: coloboc66   (24.05.2007 в 10:46)   письмо автору
 
   для: provodnik   (24.05.2007 в 10:37)
 

"Да просто запретите URL в теле сообщения гостевой книги..." - Как это сделать (книга на файлах)? В конф. файле ничего не нашел...

   
 
 автор: cheops   (24.05.2007 в 10:54)   письмо автору
 
   для: coloboc66   (24.05.2007 в 10:46)
 

Вставьте приведённый выше фрагмент в обработчик размещения сообщений.

   
 
 автор: provodnik   (24.05.2007 в 11:03)   письмо автору
 
   для: cheops   (24.05.2007 в 10:54)
 

cheops, спасибо за подсказку.
Но очень хотелось бы "доработать" randomimage, т.к. возникают случаи, когда урл нельзя вырезать...


P.s. Хочу поздравить автора скрипта. Раз его научились обходить, значит он довольно популярен в Интернет. А это лишний раз доказывает его (скрипта) практичность и удобство...
Спасибо...

   
 
 автор: coloboc66   (24.05.2007 в 11:32)   письмо автору
 
   для: provodnik   (24.05.2007 в 11:03)
 

Думаю, что надо поздравлять того, кто научился обходить. Потому что "боты" научились обходить не конкретный скрипт конкретного автора (и скриптов, и авторов много), а сам принцип защиты.

   
 
 автор: BSOD   (24.05.2007 в 11:32)   письмо автору
 
   для: provodnik   (23.05.2007 в 17:37)
 

Скрипт с софт кидает код в сесию, а бот просто парсит http заголовок,надо просто зашифровать код как нибуть(вариаций много, хотя бы mcrypt)вот и все.

   
 
 автор: Trianon   (24.05.2007 в 11:49)   письмо автору
 
   для: BSOD   (24.05.2007 в 11:32)
 

>Скрипт с софт кидает код в сесию, а бот просто парсит http заголовок, надо просто зашифровать код как нибуть(вариаций много, хотя бы mcrypt)вот и все.

И добывает из заголовка session-id . Много это ему дает? Числа то там нету. Или Вы полагаете, бот трудится на том же хостинге?
Ну как скрипт зашифрует так бот и расшифрует.

   
 
 автор: Loki   (24.05.2007 в 12:00)   письмо автору
 
   для: BSOD   (24.05.2007 в 11:32)
 

>Скрипт с софт кидает код в сесию, а бот просто парсит http заголовок
Можно пример http заголовка с указанием данных которые бот может использовать?

   
 
 автор: provodnik   (24.05.2007 в 12:00)   письмо автору
 
   для: BSOD   (24.05.2007 в 11:32)
 

Такой вопрос: возмож ли дописать ещё какую либо проверку в данный скрипт, что бы усложнить жизнь роботов? может правда попробовать с md5() хешировать те символы, которые должен ввести пользователь? Может к ним чего-нибудь прибавлять секретное перед хешированием, а потом сравнивать всё полученное?

Очень сильно нуждаюсь в решении.
Боты всё настойчивее....
Спасибо...

   
 
 автор: coloboc66   (24.05.2007 в 12:38)   письмо автору
 
   для: provodnik   (24.05.2007 в 12:00)
 

А может проверять в сообщении наличие слов "виагра и т.п." и если они есть, вообще завершать работу скрипта и отказывать в записи? И создать "словарик", куда заносить такие слова. Чтобы скрипт обращался к этому словарику при анализе сообщения...

   
 
 автор: provodnik   (24.05.2007 в 12:44)   письмо автору
 
   для: coloboc66   (24.05.2007 в 12:38)
 

"виагара" - это один из многих тысяч примеров. Это как писать фильтр-антимат... Невозможно занести в словарь всю рекламу, виды написания её ( v i a g r a, v_i_a_g_r_a и т.п.)

   
 
 автор: coloboc66   (24.05.2007 в 12:50)   письмо автору
 
   для: provodnik   (24.05.2007 в 12:44)
 

Например, я вижу по своей книге, что меня терроризируют всего два "бота" с одним и тем же сообщением у каждого. Вы хотите сказать, что, если они записывают мне слово "viagra", а я это слово запрещу, они начнут писать мне "v_i_a_g_r_a" ???!!!
Также они выдают один и тот же "УРЛ", уж синтаксис "УРЛ-а" они точно изменить не смогут.

   
 
 автор: provodnik   (24.05.2007 в 12:52)   письмо автору
 
   для: coloboc66   (24.05.2007 в 12:50)
 

неисключено...

   
 
 автор: coloboc66   (24.05.2007 в 12:54)   письмо автору
 
   для: provodnik   (24.05.2007 в 12:52)
 

Но "УРЛ" они не сменят.

   
 
 автор: provodnik   (24.05.2007 в 13:37)   письмо автору
 
   для: provodnik   (23.05.2007 в 17:37)
 

Посмотрите пожалуйста этот код на грамотность:

<?
preg_match_all
("#|.*href.*|.*http.*|.*www.*|#is"$_POST['text'], $bot); 
if (
$bot['0']['0'] != "") {echo "Запрещена публикация ссылок"; exit();}
?>

А то почему то код, приведенный г-ном cheops у меня не отрабатывается...

   
 
 автор: kasmanaft   (24.05.2007 в 16:05)   письмо автору
 
   для: provodnik   (24.05.2007 в 13:37)
 

Просто у preg_match_all 3 обязательных параметра ... добавте в конец что-нибудь.
Ваш код тоже правильный, но лучше все же использовать рег. выражение cheops'a

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования