Php защита email от спама

Защита e-mail от спамботов.

Часто пользователи удивляются, откуда спаммеры узнают их e-mail адреса и выливают на них тонны спама. Оставляя за рамками этой статьи такие способы пополнения спаммерских базы, как вирусы, «слив» адресов владельцами почтового сервера или прослушивание HTTP и ICQ траффика, рассмотрим самый распространенный случай.
Одним из основных источников новых e-mail адресов являются собственно веб-страницы, на которых беспечные пользователи (а порой и владельцы сайта) открыто публикуют свой e-mail, откуда спамботы (сборщики e-mail) без проблем его извлекают и используют в своих нехороших целях.

Далее будут рассмотрены основные приемы шифрования e-mail адресов от спамботов, а также приведены результаты замера эффективности каждого из приемов, путем практического использования каждого способа для свежезарегистрированных e-mail адресов и оценки количества спама.

В настоящее время публикуемые на страницах e-mail адреса принято защищать следующими основными способами:

1. Защита написанием e-mail на картинке (либо отдельных букв, символов @ и точки).

Достоинства: относительная легкость автоматизации, трудоемкость распознавания роботами (современные спамботы берут количеством, а не качеством, и заниматься OCR им просто не выгодно — лучше на соседнем сайте собрать десяток открытых e-mail).
Недостатки: пользователи с отключенными картинками не смогут увидеть e-mail, а пользователи со включенными картинками не смогут его скопировать. Кроме того, сложности с подгонкой шрифтов/размеров текста на картинке к остальному тексту.
Эффективность: высокая. Опубликованный таким способом e-mail адрес на одном популярном сайте так и остался «нераспечатанным» спамерами.
Добавлено: спасибо gudoshi за предоставленные примеры автоматизации этого способа:
mail2pic.org
www.mailonpix.ru

Читайте также:  Program using string in java

2. Защита при помощи кодирования e-mail адресов в мнемоники (entitles-символы).

Достоинства: легкость автоматизации, независимость от таких параметров, как включенная графика или JS у пользователя.
Недостатки: легкость расшифровки, обход некоторыми современными спамботами.
Эффективность: низкая. Опубликованный таким образом ящик получает около 10-ти писем в день, (очевидно, что некоторые роботы «сломали зубы» о такой способ, т.к. на опубликованный открыто ящик приходит в несколько раз больше писем).

3. Защита при помощи кодирования через JavaScript, с (или без) вынесением частей кода во внешний файл.

Пример:

Более корректно использовать возможности DOM вместо document.write, этот пример приведен лишь в качестве иллюстрации.

Достоинства: относительная легкость автоматизации, трудность распознавания роботами. Опубликованный таким образом адрес без проблем кликается и копируется, а также отображается людям с отключенной графикой.
Недостатки: способ не работает у пользователей с отключенным (по разным причинам) JavaScript (да, такие пользователи есть, и в определенных случаях нужно учитывать и их интересы). Автор был очень удивлен, когда клиент заявил, что не видит на странице контактов e-mail адреса.
Эффективность: высокая. На тестовый адрес спам-писем не пришло.
Добавлено: спасибо alkaruno за ссылку на сервис автоматической генерации простенькой JS-обертки для e-mail.
Пример от ecl, который можно усложнять до бесконечности:
send email

В этом примере при клике мышкой фейковый адрес заменяется яваскриптом на реальный.

4. Защита с использованием CSS, комментариев и способа 2.

В раздел помещаем примерно такой css (названия классов и содержимое можно и нужно изменять):
Можно вынести это и во внешний файл, будет даже надежнее, однако в случае неподгрузки CSS адрес будет отображаться неверно.

Далее, в коде страницы в местах, где надо вставить e-mail, используем примерно такое:
a!#N#!dress&#64mail.ru

Пояснения: домен почтового сервера необходимо обязательно «разделять», чтобы не привлекать внимание полуавтоматических сборщиков e-mail. Использовать display:none для «лишних» символов необходимо для снижения эффективности возможных strip_tags функций. Во всех возможных «скрытых» местах (и даже именах CSS-классов) лучше использовать случайные (random) последовательности символов, что затруднит их автоматический парсинг.

Способ работает во всех браузерах, независимо от включенности графики и JavaScript.
Недостаток: в некоторых браузерах адрес придется набрать вручную, поскольку скопируется только первая буква (вопрос как побороть это пока не решен). Если это важно, можно комбинировать этот способ с предыдущим, поместив все это в
Добавлено: mcm69 предложил использовать яваскрипт для правильной работы Ctrl+C на таких текстах.
Эффективность: высокая. Спам-писем не пришло.

5. Построение текста при помощи CSS

Этот очень интересный способ показал Alinaki
Для построения e-mail адресов используется CSS-шрифт (буквы составляются из маленьких div-квадратиков).
Достоинства очевидны.
Недостатки: не копируется, не отображается в случае неподгруженного CSS (выносить в около 10 кб CSS накладно). Кроме того, некоторые символы такого шрифта не совсем разборчивы.

За рамками статьи остались рассмотрение таких способов, как использование форм для отправки почты с капчей (это не всегда возможно — к примеру на форуме, где неосторожный пользователь опубликовал свой e-mail), или отображения e-mail адреса при помощи Flash.

Добавлено: любой из этих способов можно совместить с необходимостью регистрации на сайте (отображать e-mail адреса только зарегистрированным (влогиненым) пользователям, а незарегистрированным — не отображать вообще (с просьбой зарегистрироваться) либо отображать самым суровым способом). Соответствующее преобразование e-mail для незарегистрированных ботов пользователей можно произвести несложными регулярками.

Надеюсь, что статья сподвигнет web-мастеров оснастить защитой все те места, в которых беспечные пользователи так или иначе могут оставить свой e-mail (форумы, профили, камменты, и т.п.).

В данном исследовании не рассмотрены серверные способы борьбы со сборщиками e-mail (например, бан по IP), это можно считать темой следующего материала.

Материалы по теме:
Прячем email-адреса от спам-роботов (рассматриваются некоторые несложные способы).
Защита от ботов средствами PHP и JavaScript (статья от Cord). На практике рассматривается шифрование при помощи нанесения на картинку и при помощи JS.

Источник

Защита e-mail на сайте от спамеров

Защита e-mail на сайте от спамеров

Очень часто на сайте приходится публиковать свой e-mail адрес. Однако, после этого автоматические сборщики e-mail адресов для будущих спам-баз гарантированно Ваш e-mail так же прихватят. Чтобы им это не удалось, люди стали пытаться сделать так, чтобы пользователи сайта видели e-mail, а роботы нет. Самый простой пример — поставить кнопку «Показать e-mail» и после её нажатия подгружать его с сервера. Способ отличный, но придётся немного помучаться с реализацией. В этой же статье я покажу более простой способ защитить свой e-mail на сайте от спамеров.

Главный смысл вывести e-mail в виде ASCII-символов. Таким образом, сейчас задача написать PHP-функцию, которая преобразует строку в набор этих символов:

Запустите скрипт и посмотрите на результат. Вы на странице увидите «[email protected]«, однако, если Вы откроете исходный код, то увидите следующее: «a@bc.ru«. Именно это и увидят абсолютно все роботы. С подобным обычные сборщики e-mail адресов не справятся. А если начнут писать функции, которые будут преобразовывать ещё и все ASCII-символы обратно, то такой сборщик будет очень медленный. Отсюда вывод, что подобная защита e-mail на сайте от спамеров весьма эффективна.

Создано 26.03.2014 08:55:32

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 3 ):

    Класс! То, что нужно, а то спам последнее время очень часто приходит. Парсер теперь не сможет украсть почту с сайта. Спасибо, Михаил!

    Тем, чей адрес уже в спам-базе, это конечно не поможет, но само по себе это полезная находка, о чём я сам почему-то не подумал. Спасибо!

    Михаил,можешь ли ты сделать такой мануал,или что-то в этом роде(например платный видеоурок),как написать свой php мониторинг игровых серверов.Очень хочется узнать что это такое и с чем его едят.

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Как правильно защитить форму от спама?

    У меня имеется сайт с формой для связи, где пользователь вводит своё имя, E-Mail и пишет своё сообщение. Далее он должен заполнить капчу (ReCaptcha v2) и отправить запрос.
    После заполнения данные из формы подставляются в библиотеку PHPMailer и она отправляет мне это сообщение на E-Mail.

    Функция работает, но после популяризации сайта, через форму начал приходить спам (причём через заданный промежуток времени). Как правильно защитить форму от спама и на каком именно уровне? Есть мысли, что необходимо создать проверку отправленных данных через DNS (для того, чтобы перед отправкой формы быть уверенным, что они были отправлены именно из моей формы), или проблема с капчей (что робот может обойти её), или проблема вовсе в уязвимости библиотеки PHPMailer. Пробовал разные версии ReCaptcha (v2 и v3). В статистике Google показывает рейтинг пользователей только 0.7 и 0.9 (то есть довольно высокий.). Я на 100% уверен, в статистике отображаются спамеры, так как несколько дней мониторил статистику Google и отправленные мне сообщения.

      

    Причём есть небольшая проверка на стороне сервера:

    if ($_POST['check'] != 'bread') exit('Spam detected!'); else < //Отправка сообщения, если не спам >

    В интернете я не нашёл решения этой проблемы, хотя люди с ней сталкиваются.

    Средний 7 комментариев

    Источник

    Оцените статью