Кратко о том, как уберечь свой ящик от нежелательной почты (спама) для простых смертных:
*завести отдельный ящик для спама - его использовать на всех сайтах, которые требут регистрации через мыло.
*Не светить свой ящик без необходимости (особенно на форумах).
*Использовать средства защиты от спама.
*По желанию: использовать сервисы типа http://2prong.com/, чтобы получить ящик на время регистрации на другом сайте. Получить строку активации и навсегда забыть про этот ящик.
Администраторы сайтов также являются простыми смертными, но они описанное выше знают и исполняют. Потому они и админы!...
Что же можно сделать, чтобы защитить адреса на сайте от спамеров?
==Задача==
*настоящий адрес, а не contact_removethis@company.com,
*при щелчке мышью срабатывает как и ожидается,
*имеет иммунитет от спам-роботов.
==Варианты==
Роботы не распознают JS и изменения в DOM-структуре... Поэтому можно сделать модификацию HTML-кода уже в браузере клиента. Спам-боты его не увидят, а увидят только полноценные браузеры. Имено это и делает модуль [http://drupal.org/project/spamspan SpamSpan].
*The SpamSpan module obfuscates email addresses to help prevent spambots from collecting them. It implements the technique at http://www.spamspan.com.
*Зависит от: Filter
*Разрабатывается с 2006 года.
*Позволяет менять [at] на странице "Настройка" (/admin/settings/filters/1/configure) при редактировании определённого фильтра ввода... Но эти настройки ни на что не влияют....
Настройка:
#Заходим на страницу настройки "Фильтры ввода" (/admin/settings/filters)
#Ищем чекбокс "Hide email addresses" и ставим галочку. Повторяем для каждого фильтра.
#Пишем статью с мылом для проверки....
На странице вижу: dsdf [at] sdfsdf [dot] com (это без JS - так увидят страницу спам-боты)
Вот как выглядит код:
dsdf [at] sdfsdf [dot] com
Включаем JS. На странице вижу: dsdf@sdfsdf.com (обычная ссылка mailto - при щелчке вызывается почтовый клиент для сочинительства)
Вот как выглядит код:
dsdf@sdfsdf.com
'''Ложка дёгтя:'''
Во-первых, всё ещё есть пользователи, которые по тем или иным причинам не имеют поддержки JS - старые браузеры, корпоративная политика фирмы, текстовые браузеры и др. Они остаются за бортом...
Во-вторых, мне кажется, что нельзя недооценивать врага. Мне кажется, что нужно быть очень тупым роботом, чтобы не заподозрить в этой строке мыло:
dsdf [at] sdfsdf [dot] com
Всё, что можно менять - имена классов для имени и домена и символ [at]... Не такое уж и большое разнообразие.
Конечно - это лучше чем ничего, но всё же стоит посмотреть что ещё есть у нас в арсенале...
--------
Есть ещё модуль [http://drupal.org/project/GTSpam GTSpam].
Настраивается также - на странице форматов ввода среди остальных фильтров ищите чекбокс "Obfuscate email addresses"...
Дополнительных настроек, в отличии от предыдущего модуля, нет вообще - это уже плохо.
На странице адрес выглядит так:
dsdf@sdfsdf.com" rel="nofollow">dsdf@sdfsdf.com
Очень плохо! Адрес виден - и это и при включённом JS и при выключенном.
Я уж было совсем расстроился - и так модуль был у меня в чёрном списке, потому что не работал... Просто вышла новая версия - дай думаю посмотрю...
Но, оказалось, что это я неправ - нужно этот фильтр ставить самым первым (верхним) в списке - тогда всё ОК!
Вид на странице с JS: dsdfsdfsdf.com - то есть он соединил имя пользователя и домен в одну строку
Код:
dsdfsdfsdf.com
Это уже интересно!...
Без JS. Вид на странице и код такой же! Ура. Очень интересно!...
При щелчке мышью открывает окно почтовой программы - всё как нужно. Самое время дать инфу по модулю:
*5.x-0.4
*The GlobalTEK GTSpam module obfuscates email addresses to help prevent spambots from collecting them, without loosing the mailto URL scheme default semantics and operations (see RFC 2368).
*Зависит от: Filter
*Проект появился в июле 2007
'''Ложка дёгтя:'''
При щелчке мышью - открывает новое окно с пустой страницей, а лишь затем окно почтовой программы. Странное поведение. Ведь можно было открыть в этом же окне эту ссылку и сделать редирект на страницу, с которой скрипт вызвали... Ок. Об этом можно будет поговорить с автором...
А вообще этот модуль оказался даже лучше, чем первый. Я даже не ожидал...
--------
Идём дальше.
(Пока писал кто-то уже поставил статье 1 балл - аж хочется дальше разбираться! Спасибо
Модулей на эту тему на drupal.org я больше не нашёл. Зато нашёл новый модуль (проект начат в сентябре 2007го) - [http://drupal.org/project/gotcha Gotcha]. Защищает стандартную форму контактов Друпал. Добавляет поле, которое показывается средствами CSS, а роботы его не увидят. При отправке формы проверяется заполнение этого поля - если пусто - спам.
--------
Хочется ещё описать технику, которую нашёл на сайте http://www.alistapart.com - она не реализована в виде модуля, но возможно это будет сделано, потому что спам достал всех!
===Ингридиенты:===
*Нужны Apache 2 и PHP 4 или выше.
*Модуль mod_rewrite включён
*Возможность изменять .htaccess
===Маскировка:===
Нужно сделать так, чтобы ссылка ниже выглядела совершенно не похожей на почтовую ссылку:
E-mail our sales department
После преобразования на стороне сервера мы должны получить:
E-mail our sales department
После применения [http://en.wikipedia.org/wiki/Rot13 ROT13] (смещение на 13 символов по кругу):
E-mail our sales department
Несколько замечаний:
*“contact” как имя папки в примере можно изменить на любое другое. Для замены “@” и точек в адресе применено“+”, потому что обычно ”+" не позволяется в настоящих адресах e-mail и не нуждается в URL-перекодировании, что пригодится позже.
* Параметр rel="nofollow" добавлен, чтобы поисковики не шли по этим ссылкам. Смотрите [http://microformats.org/wiki/rel-nofollow детали о rel="nofollow" на Microformats.org].
(Уже 2 балла поставили... А статья ещё не закончена...)
*Кроме того, ссылка является неправильной - она не существует и любой робот может научиться это определять, потому что страницы по этому адресу просто нет. Позже мы это должны будем исправить.
===Код===
Этот код заменяет все правильные мыльные ссылки на запутанные:
function encrypt_mailto($buffer) {
preg_replace("/\"mailto:([A-Za-z0-9._%-]+)\@([A-Za-z0-9._%-]+)\.([A-Za z]{2,4})\"/","\" contact/\\1+\\2+\\3\" rel=\"nofollow\"",$html)
}
Если использовать ROT13, то код становится несколько длинее... Ссылка на полный скрипт будет в конце статьи.
===Починяем ссылку===
Если кто-то щёлкнет ссылку, которую мы сделали, то он получит Error 404! А это не хорошо. Используя JS это решается в несколько строк, но мы помним о 6% людей без JS... Апачи нам поможет!
Настроим mod_rewrite так, чтобы все ссылки он корректно распознавал:
RewriteRule ^.*contact/([A-Za-z0-9._%-]*)\+ ([A-Za-z0-9._%-]*)\+([A-Za-z.]{2,4})$ /yourpath/mail.php?n=$1&d=$2&t=$3 [L]
[http://www.alistapart.com/d/emailobscuration/geo/source/geo.zip Скачать архив со скриптами (8Кб)]. Автор утвреждает, что работает во всех браузерах, включая ИЕ5.01
Спамеры становятся умнее и нужно быть готовым к этому!
==Дополнительная информация==
*[http://www.alistapart.com/articles/gracefulemailobfuscation Graceful E-Mail Obfuscation]
*[http://en.wikipedia.org/wiki/Anti-spam_techniques_%28e-mail%29 Wikipedia: Anti-spam techniques (e-mail)]
Комментарии
Ошибка вышла. Есть оказывается настройки и у модуля GTSpam:
На странице настройки фильтра (/admin/settings/filters/1/configure) вверху ищите "GTSpam email address filter"...
Там можно сделать преобразование ссылки уникальным, причём для каждого формата ввода.
Модуль вставляет между именем пользователя и доменом значок "собаки", но он не будет виден, если в фильтре не разрешен тег IMG. Это нужно проверять, так как я этот тег отключаю из-за возможности XSS...
Использую стандартный contact.module, Email field и доработанный напильником Email Verification.
Метод очень простой и надежный.
Посетитель жмет ссылку и пишет письмо без участия почтового клиента. Для отправки необходимо указать реально существующий обратный адрес. Если посетителю никто не ответит, он так и не узнает куда было доставлено письмо.
Адреса электронной почты на сайте отсутствуют, форма отправки (как и все остальные формы) защищена от ботов и флада стандартными средствами, текст сообщения фильтруется.
Почта ходит, спама нет![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
greylisting
ответ на все проблемы
'''2 tema:'''
Решение хорошее, но если пользователь в свой статье укажет адрес (свой или чужой), то спам-боты его найдут. Этот модуль является именно фильтром ввода пользовательских данных.
А за настройку обратной связи спасиб - я сохраню у себя эту информацию.
Недавно появился модуль на эту тему: [http://drupal.org/project/gotcha Gotcha - Contact Spam Catcher]
'''2 andron13:'''
Спасибо за ссылку - сейчас разбираюсь с этим вопросом.
У greylisting есть слабые стороны и если он станет повсеместно используемым решением, то перестанет защищать. Чем оригинальнее решение - тем меньше вероятность, что сломают.