Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Борьба со спамом [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Описание: как бороться?
Viper
Отправлено: 06 Апреля, 2011 - 10:34:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Такс. Хочу ещё обсудть тех. момент Улыбка Никто не против? Улыбка

Цитата:
все же стоит контролировать количество неверных попыток

Есть форма. Есть метод поверки что ввели и выдачи капчи. После проверки капчи данные куда-то передаются.
Есть юзер зареганый, а есть не зареганый. Для зареганого юзера проблем постаить лимит на попытки нету. Проблема возникает когда юзер незареганый. Как ему лимит то "назначить"? К чему привязать? Куда сохранить временные данные? И по какому признаку блокировать? По IP не вариант скорее всего...

Ваши идеи?! Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Мелкий Супермодератор
Отправлено: 06 Апреля, 2011 - 11:19:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Не силён в имеющихся капчах, но один раз мне попалась интересная модификация:
"введите цифры с капчи и прибавьте к ним 10". Вроде способ не слишком популярный, но ботов, которые не разбирают написанное около капчи отбросит.
И можно JS использовать в догрузку, боты его гораздо реже умеют.

Или всё глупости говорю?


-----
PostgreSQL DBA
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Апреля, 2011 - 11:23:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Идея только одна:
Стартовать сессию всегда. И давать уникальный cid, на каждой странице новый, и зареганым и незареганым. Иметь стек с данными обо всех сразу. Там и считать кто, что и сколько раз делал. Зато можно логировать.
Если некий клиент, cid сессии не футболит обратно - значит 99% это не юзер с браузера, а бот.. Тогда сразу - хер ему в зубы.
 
 Top
Viper
Отправлено: 06 Апреля, 2011 - 11:37:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Мелкий пишет:
Или всё глупости говорю?
ну вот точно не уверен. Использовал js для посылки запросов и его же для показа формы капчи.

DeepVarvar спасиб. Попробую реализовать на языке Joomla Улыбка


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
levchick
Отправлено: 06 Апреля, 2011 - 15:44:38
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Июль 2010  


Помог: 3 раз(а)




Viper пишет:
Есть форма. Есть метод поверки что ввели и выдачи капчи. После проверки капчи данные куда-то передаются.
Есть юзер зареганый, а есть не зареганый. Для зареганого юзера проблем постаить лимит на попытки нету. Проблема возникает когда юзер незареганый. Как ему лимит то "назначить"? К чему привязать? Куда сохранить временные данные? И по какому признаку блокировать? По IP не вариант скорее всего...


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

Еще один вариант связывать кол-во попыток с IP, но это может негативно отразится на локальных сетях и пользователей прокси-серверов...
(Добавление)
DeepVarvar пишет:
Идея только одна:
Стартовать сессию всегда. И давать уникальный cid, на каждой странице новый, и зареганым и незареганым. Иметь стек с данными обо всех сразу. Там и считать кто, что и сколько раз делал. Зато можно логировать.
Если некий клиент, cid сессии не футболит обратно - значит 99% это не юзер с браузера, а бот.. Тогда сразу - хер ему в зубы.


Да, тоже хороший выход
 
 Top
ZekMan
Отправлено: 08 Апреля, 2011 - 10:51:34
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




А что думаете про капчи с русскими буквами?
 
 Top
Viper
Отправлено: 08 Апреля, 2011 - 11:34:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




ZekMan вообще мертвая затея. Зайдет юзер-эмигрантЪ из америки с мака где нет русской клавы и все. -1 юзер.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Fobius
Отправлено: 08 Апреля, 2011 - 11:52:22
Post Id


Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Нояб. 2009  


Помог: 1 раз(а)




Когдато на сайте Киевстара для отправки СМС нужно было считать живые и неживые предметы... мне кажется это даже не все индусы посчитают))) Тут ведь еще и подумать надо)))
Может не в тему, просто не встретил в теме такого варианта проверки...
 
 Top
ZekMan
Отправлено: 08 Апреля, 2011 - 18:24:56
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Viper
для таких случаев можно js клаву делать и что бы много место не занимала - делать только те символы которые есть в капче, тогда и боты не смогут пробится, ибо не умеют пользоваться они js'ом...


Ну а вообще я сейчас переписываю на пыху Point System http://habrahabr[dot]ru/blogs/spam/105366/
 
 Top
Haron
Отправлено: 08 Апреля, 2011 - 20:58:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Цитата:
Сохраняют ли боты куки

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

Насчёт капчи... Почему бы простую матановую капчу не попробовать?


-----
И чё?
 
 Top
Champion Супермодератор
Отправлено: 08 Апреля, 2011 - 21:04:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




http://habrahabr[dot]ru/blogs/php/28151/ во такая капча
 
 Top
levchick
Отправлено: 09 Апреля, 2011 - 08:02:09
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Июль 2010  


Помог: 3 раз(а)




Champion пишет:
http://habrahabr[dot]ru/blogs/php/28151/ во такая капча


В коментариях к этой капче описано, как минимум, два способа ее распознатьУлыбка
(Добавление)
Haron пишет:
Цитата:
Сохраняют ли боты куки

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

Насчёт капчи... Почему бы простую матановую капчу не попробовать?



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

Матановая капча это конечно здорово, только далеко не все посетители интернета (к сожалению) получали высшее техническое образование. Такая капча хороша на специализированных сайтах.
 
 Top
ZekMan
Отправлено: 09 Апреля, 2011 - 10:23:53
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Champion
Ее я тоже пробовал...
 
 Top
ZekMan
Отправлено: 09 Апреля, 2011 - 12:48:17
Post Id



Новичок


Покинул форум
Сообщений всего: 28
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Собственно грабли на тему распознавания спама
PHP:
скопировать код в буфер обмена
  1.  
  2. function spam_filter($message) {
  3.         global $report; # тестовый вывод ответа функции
  4.  
  5.         $points = '0'; # начальное значение балов
  6.  
  7.         # присваиваем баллы за количество ссылок
  8.         preg_match_all('/(http).?(:\/)/', $message, $out);
  9.         $count_link ='0';
  10.         foreach($out['0'] as $val) {
  11.                 $count_link++;
  12.         }
  13.         if ($count_link >= '2') {
  14.                 $points = $points - $count_link;
  15.         } else {
  16.                 $points = $points + '1';
  17.         }
  18.  
  19.         # присваиваем баллы за количество символов
  20.         if (strlen($message) >= '20' and $count_link == '0') {
  21.                 $points = $points + '2';
  22.         } else {
  23.                 $points = $points - '1';
  24.         }
  25.  
  26.         # Проверка по фильтру
  27.         $count_filter = '0';
  28.         $query = mysql_query("SELECT `word` FROM `bad_word`;");
  29.         while ($bad_word = mysql_fetch_row($query, MYSQL_NUM)) {
  30.                 preg_match_all('/'.$bad_word['0'].'/', $message, $out);
  31.                 foreach($out['0'] as $val) {
  32.                         $count_filter++;
  33.                 }
  34.         }
  35.         if ($count_filter > '0') {
  36.                 $points = $points - $count_filter;
  37.         }
  38.  
  39.         # Поиск BB тегов
  40.         $bb_count = '0';
  41.         preg_match_all('/\[link/', $message, $out);
  42.         foreach($out['0'] as $val) {
  43.                 $bb_count++;
  44.         }
  45.         preg_match_all('/\[url/', $message, $out);
  46.         foreach($out['0'] as $val) {
  47.                 $bb_count++;
  48.         }      
  49.         if ($bb_count > '0') {
  50.                 $points = $points - $bb_count;
  51.         }
  52.  
  53.  
  54.         $report['points'] = $points;
  55.  
  56.         # Вердикт
  57.         if ($points >= '0') {
  58.                 return true;
  59.         } else {
  60.                 return false;
  61.         }
  62. }
  63.  

В бд содержится словарь плохих слов...
 
 Top
vsll
Отправлено: 09 Апреля, 2011 - 13:05:45
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




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

А капча действительно только раздражает, тем более, когда знаешь, что от неё нет толку

(Отредактировано автором: 09 Апреля, 2011 - 13:10:12)

 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB