Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Защита гостевых от спама

Vande omentaina, industry!
Народ, никто случаем не знают, как гостевые от спама защищают?
Я сделал три защиты:
1. Бан айпишников. Однако они их прогой плодят и всегда с разных
пишут.
2. Исключил возможность повтора сообщений. Но ведь можно одно слово
изменить и по-прежнему клепать кучу ссылок на порносайты.
3. Сделал так, что в сообщении нельзя добавить более двух ссылок. Но
они стали и по одной слать, отчего не легче.
Кто что посоветует?
Спасибо!

Ответить   Anarendil Sat, 25 Aug 2007 12:58:03 +0400 (#687537)

 

Ответы:

Здравствуйте вам, Anarendil!
Несколько слов по теме '[TC] Защита гостевых от спама':

Только символы с картинки. Лучшей защиты пока не придумали.

Let's meet in space, Anarendil!

Ответить   Sat, 25 Aug 2007 13:07:59 +0300 (#687580)

 

Здравствуйте.

-----------------------*- Original Message -*A>> Кто что посоветует?

Придумали: символы с озвучкой :-) См. гостевую на Тифлокомпе:
http://www.tiflocomp.ru/folio/

Ответить   Vladimir Dovydenkov Sat, 25 Aug 2007 19:22:40 +0400 (#687606)

 

Здравствуйте, Anarendil.

Иногда еще ставят картинку как при регистрации.

Ответить   Sat, 25 Aug 2007 18:02:06 +0400 (#687596)

 

Anarendil пишет:

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

Ещё просят выполнить какие-нибудь несложные арифметические действия.

Ответить   Дмитрий Падучих Sat, 25 Aug 2007 22:38:31 +0600 (#687619)

 

Доброе время суток, уважаемые участники рассылки и Anarendil!

В письме от 25 августа 2007 г., 11:58:03 мне довелось прочесть:

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

Ответить   Sat, 25 Aug 2007 22:08:54 +0300 (#687629)

 

Vande omentaina, Ivbera!

Да я её, гостевуху-то, сам писал))).

Ответить   Anarendil Sun, 26 Aug 2007 02:11:04 +0400 (#687639)

 

Здравствуйте, Андрей.

Кроме теста Тьюринга (графического, звукового, текстового и т.п.), вряд ли что
поможет реально.

В отношении роботов это не очень эффективный вариант. Можно еще сделать проверку
HTTP_REFERER , который должен содержать url вашего ресурса. В принципе, поле
referer тоже может быть сформировано скриптом спамера, что можно проверить, изучив
логи сервера. Если у роботов пустой реферер, то такая защита будет работать.

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

Также можно при заходе на страницу с формой для размещения сообщения создавать
специфические cookies и проверять их наличие при обработке формы. Примитивные
спам-роботы не поддерживают cookies.
Если у посетителя отключены cookies, то он тоже не сможет отправить сообщение.

Еще вариант: ежедневно (или чаще) менять либо значение hidden элемента формы,
либо имя (name), например, кнопки "Отправить" и проверять наличие этого значения
или имени в POST-параметрах пришедшей формы. Актуальное имя можно хранить либо
в файле на сервере, либо в базе (либо формировать автоматически, например, имя
может быть = "send" . md5(date("D-m-Y")); пока никто из роботов не знает, как
вы формируете имя кнопки, защита будет работать ).
Неудобство: попадание посетителя на границу двух дат (начал заполнять форму вчера,
отослал -- сегодня).

У всех вариантов есть свои "дыры". Найдите их сами :))))

Успехов. Анатолий.

Ответить   "i_chay" Sun, 26 Aug 2007 01:00:24 +0500 (#687630)

 

i_chay пишет:

Чтобы роботы не узнали, нужно к дате добавлять секретную фразу перед
вычислением md5, например:

md5("big secret" . date("D-m-Y"))

Развивая идею с генерацией ключей в URL, можно использовать такую схему. На
странице со ссылкой на гостевую добавлять скриптом к этой ссылке параметры
примерно такого вида:

guestbook.php?keytime=1188116900&keyvalue=7fba4b94a50c0e91767a303e9515a7f3

где keytime - время создания ключа в секундах с начала эпохи;

keyvalue - значение ключа, которое вычисляется как md5-сумма от следующих
компонентов:

- keytime;
- IP-адрес клиента;
- секретная фраза.

При входе на гостевую скрипт guestbook.php просто копирует значения keytime
и keyvalue в параметры формы. При попытке опубликовать запись в гостевой
проверяется валидность keytime и keyvalue. Валидность в данном случае
означает, что, во-первых, при вычислении ключа по приведённой выше схеме
получается значение keyvalue, а во-вторых, что значение keytime не устарело
(период устаревания можно выбрать по вкусу).

Поскольку время берётся в секундах с начала эпохи, то можно не волноваться о
том, что пользователь попадёт на границу между датами.

Ещё можно полностью запретить ссылки в сообщениях гостевой.

Ответить   Дмитрий Падучих Sun, 26 Aug 2007 15:48:44 +0600 (#687714)

 

Здравствуйте, дамы и господа,

Хочу ко всему сказанному добавить практический совет, который
проистекает из простого рассуждения. Рассуждение такое:

От чего, собственно, мы предполагаем защититься? Я вижу всего две
возможности: 1. От программ-роботов, работающих с базой адресов
сайтов, где можно выкладывать рекламу. 2. От хакеров, пытающихся
целенаправленно взломать какой-то сайт. Думаю, если речь не идёт о
сайте фирмы, а просто о небольшом частном сайте, исходить надо из
первого предположения.

Как совершенно справедливо указывал i_chay и другие отвечающие, для
отфильтровки роботов от людей можно использовать тест Тьюринга в любой
модификации.

А теперь собственно предложение: В форме ввода записи в гостевую книгу
пишем текст типа: дорогой друг, если вы хотите оставить запись в
гостевой книге, первым словом в вашей записи должно быть слово бонжур,
иначе запись будет отвергнута.

В программе проверки новой записи проверяем наличие волшебного слова.

Если слово найдено, то мы его из текста вырезаем, и запись разрешаем.
Если слово не найдено, то мы вежливо предлагаем внимательно читать
замечание.

Разумеется, в качестве "волшебного" можно использовать любое слово,
например, пожалуйста, баобаб, или [*] Важно чтобы слово было
нетипичным для начала рекламы, и не слишком обременительны, не слишком
длинным.

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

Такая защита отрубит роботов до тех пор, пока кто-нибудь из хакеров не
обнаружит её лично. По моим оценкам, для личного сайта это даст 95%
защиту. На самом деле, важно ведь не абсолютная надёность защиты, а
соотношение затрат на её создание и взлом.

--
С наилучшими пожеланиями
Владимир Лукьянов, Москва

Ответить   Mon, 27 Aug 2007 02:17:08 +0400 (#687801)

 

Vande omentaina, Владимир!
Владимир, тут такое чувство, что на этот сайт (хотя он никому
неизвестен) повадился какой-то "умник". Вы думаете, робот стал бы
отрезать ссылки и посылать их по одной? Тем более, что если число
ссылок превышено, то выдаётся просто ошибка "Невозможно отправить
сообщение" без каких-либо объяснений...

Ответить   Anarendil Mon, 27 Aug 2007 08:54:39 +0400 (#687827)

 

Здравствуйте, Anarendil,

Я думаю, адрес вашего сайта попал в базу данных рекламных роботов, как
адрес имэйл попадает в базы спамеров. И против Вас просто работает уже
несколько роботов. А может быть, работает один робот, просто он
продолжает валить рекламу валом, с двумя ссылками Вы отрезаете, а с
оной пропускаете, вот и создаётся впечатление, что он перестроился.
Чтобы это проверить, надо бы вести журнал отвергнутых сообщений, и его
потом анализировать. Разумеется, я могу ошибаться, и Вы правы, против
Вас работает какой-то хакер. В этом случае защита может для Вас
оказаться более трудоёмким делом чем для него атака. Предложенный мною
способ, на мой взгляд, позволяет с очень высокой вероятностью
определить: кто именно против вас работает - робот или хакер.

Если против Вас всё-таки работает хакер, то защититься будет сложно. Я
бы сказал, что защита должна продумываться так, чтобы злоумышленник
тратил как можно больше своего времени на анализ и борьбу с защитой.
Например, можно ввести массив из 31 ключевых слов, для каждого числа
месяца своё. Если при этом ещё и менять текст уведомления о ключевом
слове для пользователя, то хакеру придётся самому ежедневно
просматривать сайт для поиска закономерности. Если массив слов
раздуть до 365, то такой труд должен в конце концов ему надоесть.

В общем, я думаю, гарантированных путей защиты нет. Надо начинать с
самых простых по реализации, и оценивать результат.

--
С наилучшими пожеланиями
Владимир Лукьянов, Москва

Ответить   Mon, 27 Aug 2007 13:29:25 +0400 (#687903)