Защита адреса электронной почты: как предотвратить спам

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

Сбор электронной почты: как спам-боты выслеживают свою жертву

Сбор электронных писем — это автоматизированное получение адресов электронной почты для недобросовестной рекламы, фишинговых атак или распространения вредоносного программного обеспечения. Для этой цели специализированные программы (известные как «сборщики электронной почты») ищут адреса электронной почты на веб-сайтах, в списках рассылки, интернет-форумах или социальных сетях. Характерный синтаксис, который соответствует всем адресам электронной почты, позволяет получить искомую контактную информацию. Простые шаблоны поиска в исходном тексте веб-сайта ищут знаки @. Этот знак обычно не встречается в естественных текстах, но используется в адресах электронной почты для отделения имени пользователя и домена друг от друга. Транскрибирование адреса обеспечивает слабую защиту. Более изощренные спам-боты могут даже искать популярные альтернативные написания, такие как [at], [AT], (at), (AT):

User@domain.com

User[at]domain.com

Если знак @ или его эквивалент содержит два специальных символа, разделенных точкой, это явный признак того, что это адрес электронной почты. Даже замена ‘dot’ перед доменом верхнего уровня дает сравнительно небольшую защиту и делает его более трудночитаемым:

User[AT]domain[DOT]com

Еще более показательным, чем знак @, является HTML-ссылка электронной почты ‘mailto:user@domain.com’. Это позволяет посетителям сайта простым щелчком мыши открыть предпочитаемую ими программу электронной почты. Адрес получателя автоматически копируется в соответствующее поле. Это практично, но все же не мешает спам-ботам понять, что это адрес электронной почты. Поэтому операторам сайтов рекомендуется не использовать традиционные шаблоны, когда дело доходит до предоставления вариантов контактов. В то же время посетители сайта должны иметь возможность прочитать адрес, чтобы они могли легко связаться с вами в случае необходимости.

Классическое представление адреса электронной почты без защиты

Для того чтобы максимально защитить адрес электронной почты до того, как он будет автоматически считан сборщиками писем, необходимо представить, как он обычно интегрируется в веб-страницу. Простой, легко доступный адрес электронной почты можно вставить в любую HTML-страницу, используя следующий пример кода:

<p>If you have any questions or suggestions, please write an e-mail to: 
  <a href="mailto:user@domain.com">user@domain.com</a>.
</p>

Когда посетитель заходит на веб-страницу с таким кодом, браузер отображает следующую информацию, включая кликабельную ссылку mailto:

Если у вас есть какие-либо вопросы или предложения, пожалуйста, напишите письмо по адресу: user@domain.com.

С точки зрения пользователя это идеальное представление адреса электронной почты в Интернете. Для того чтобы сохранить удобство отображения, наиболее популярным методом защиты адреса электронной почты является придание ему неузнаваемого вида в исходном тексте без изменения того, как он выглядит в браузере. В качестве альтернативы можно отделить адрес электронной почты от фактического веб-сайта и перенаправить его на ссылку mailto с помощью переадресации на стороне сервера. Однако переписывание адресов электронной почты в представлении браузера встречается все реже и реже. Причина в том, что это не так удобно для пользователя и не так эффективно для предотвращения спама.

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

Подмена адреса электронной почты

Стратегии защиты, основанные на подмене, предполагают удаление всего адреса электронной почты из исходного текста и замену его графическим изображением или ссылкой на mailto.

Интеграция адреса электронной почты в виде графического изображения

Если адрес электронной почты реализован в виде графики, он все еще может быть прочитан человеческим глазом, но тексты, написанные в виде графики, трудно распознать сборщикам электронной почты. Иногда встречаются спам-боты, способные преобразовывать элементы изображения в текст с помощью оптического распознавания символов (OCR), но это происходит нечасто. Поэтому включение соответствующей контактной информации в виде графики обеспечивает сравнительно высокую защиту от спама. Однако операторы веб-сайтов должны понимать, что это может ограничить удобство пользования их веб-сайтом. Следующий HTML-код показывает, как адрес электронной почты может быть интегрирован в веб-сайт в виде графического файла:

<img src="Path/graphicfile.png" with="120" height="20" alt= If you have any questions or suggestions, please write an email to: user@domain.com"> 

Посетителям сайта будет показано следующее графическое изображение:

Этот адрес электронной почты разборчив для большинства людей. Текст не может быть ни скопирован, ни связан со ссылкой mailto. Хотя большинству пользователей трудно вручную набирать адрес электронной почты, текстовая информация в виде графики часто недоступна для пользователей с нарушениями зрения. Поэтому имеет смысл включить описание графики в качестве alt-текста. Такие тексты могут считываться программами чтения экрана, но минус в том, что спам-боты также могут их считывать, поэтому этот метод не рекомендуется использовать в качестве превентивной меры против спама.

3 способа присутствия и роста в Интернете

Найдите себя с помощью собственного домена. Завоевать доверие с помощью собственного адреса электронной почты. Привлечь посетителей с помощью собственного сайта.

Купить домен

Получить индивидуальный адрес электронной почты

Создайте веб-сайт

HTML-ссылка на электронную почту через редирект

Чтобы эффективно защитить адреса электронной почты от харвестеров, хорошо бы отделить их от веб-сайта. Обычно используется скрипт, который после первого клика перенаправляет пользователей на ссылку mailto. При этом открывается почтовая программа пользователя и отображается адрес. Для спам-ботов, сканирующих исходный код сайта, эта ссылка будет выглядеть как ссылка на файл, что предотвращает автоматическое чтение. Этот механизм защиты может быть реализован, например, в виде ссылки на PHP-файл, содержащий редирект:

<p> If you have any questions or suggestions, please write us an
  <a href="redirect-mailto.php">email</a>.
</p>

Содержимое файла redirect-mailto.php представляет собой скрипт, который перенаправляет на реальную ссылку mailto:

<?php
header("Location: mailto:user@domain.com"); 
?>

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

Недостатком этого решения по предотвращению спама является то, что пользователям необходим обработчик для mailto:, чтобы попасть на адрес электронной почты. На практике это обычно почтовая программа, такая как Outlook или Thunderbird. Однако в новых браузерах в качестве обработчика могут быть указаны и веб-почтальоны.

Маскировка адреса электронной почты

Если вы не хотите полностью заменять адрес электронной почты графикой или ссылкой mailto, существуют альтернативные стратегии. Они позволяют закодировать адрес электронной почты, маскируя дополнительные элементы или сначала компилируя их в браузере с помощью JavaScript. Простое кодирование может быть реализовано, например, с помощью HTML-сущностей, а также с помощью URL или HEX-кодирования. Простые стратегии маскировки опираются на функцию комментариев, элементы HTML и CSS. Немного сложнее, однако, маскировать электронное письмо путем динамического составления адреса.

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

Маскировка с помощью кодировки символов

Обычная кодировка символов, используемая при маскировке адресов электронной почты в исходном коде, основана на HTML-сущностях, HEX-коде или процентах кодировок URL. Эти описания изначально были разработаны для представления специальных символов через стандартные знаки. Для маскировки адресов электронной почты этот тип кодировки подходит, поскольку соответствующие ссылочные символы автоматически переводятся в представлении браузера. Если символы адреса электронной почты user@domain.com маскируются с помощью HTML-сущностей, они сначала записываются в альтернативном стиле.

&запятая; = @

&period; = . (точка).

В результате получается следующий исходный код:

<p> If you have any questions or suggestions, please write an email to: 
  <a href="mailto:user&commat;domain&period;com"> user&commat;domain&period;com</a>
</p>

Поскольку сущности HTML были определены только для специальных символов, это означает, что при таком кодировании символов ни весь адрес электронной почты, ни значимая текстовая строка mailto: не могут быть зашифрованы. В качестве альтернативы возможно представление с использованием кодировки HEX. Здесь используется номер символа Unicode, который приведен в следующей базовой схеме:

&#characternumber;

Обычно шестнадцатеричный номер соответствующего символа обозначается маленькой буквой ‘x’. Таким образом, буква «m» может быть записана как «&#x6d;» или десятичная «&#109;». Адрес электронной почты user@domain.com, включая ссылку mailto, будет выглядеть следующим образом:

<p>If you have any questions or suggestions, please write an 
<a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x62;&#x65;&#x6e
;&#x75;&#x74;&#x7a;&#x65;&#x72;&#x40;&#x64;&#x6f;&#x6d;&#x61;&#x69;
&#x6e;&#x2e;&#x64;&#x65;">email</a>.
</p>

Соответствующие опорные символы для перевода адреса электронной почты можно легко найти в списках, доступных в Интернете. Наглядный обзор представлен на сайте htmlarrows.com. Если вы хотите закодировать полный адрес электронной почты, мы рекомендуем программы кодирования, которые предлагаются бесплатно в виде веб-приложений на многочисленных сайтах.

Еще один способ защитить адреса электронной почты от спама — использовать кодирование URL. Этот метод изначально был разработан для того, чтобы присвоить специальным символам в URL то, что может интерпретировать браузер. Используются трехсимвольные комбинации, состоящие из двухсимвольного шестнадцатеричного кода ASCII соответствующего символа и заранее определенного символа процента. В следующем примере показано, как знак @ маскируется с помощью кодирования URL:

<p>If you have any questions or suggestions, please write an
  <a href="mailto:user%40domain.com">email</a>.
</p>

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

Маскировка путем дополнения

В принципе, можно скрыть адреса электронной почты от спам-ботов, вставив в них дополнительные символы. Тогда программы не увидят адрес целиком и, следовательно, не смогут считать его автоматически. HTML-комментарии предоставляют простой способ сделать это.

<!— Комментарий —>

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

<!— abc@def —>

<!— @abc.com —>

Если добавить подобные комментарии в адрес электронной почты, то спам-боты (сканирующие веб-сайт) наткнутся на следующий код:

<p>If you have any questions or suggestions, please write an email to:
us<!-- abc@def -->er@domai<!-- @abc.com -->n.com. 
</p>

Однако при просмотре в браузере HTML-комментарии невидимы.

В качестве альтернативы можно вставлять любые символы без комментариев, если они скрыты в представлении браузера с помощью CSS. В следующем примере адрес электронной почты прерывается элементом span. Содержимое между начальным и конечным тегом не учитывается из-за качества отображения вместе со значением none.

<style type="text/css">
span.spamprotection {display:none;}
</style>

<p>If you have any questions or suggestions, please write an email to:
user<span class="spamprotection">CHARACTER SEQUENCE</span>@domain.com. 
</p>

В то время как пользователь-человек получает в веб-браузере правильный адрес электронной почты, спам-бот, как ожидается, считывает смешанный текст в элементе span. Это дает операторам сайтов возможность использовать адрес электронной почты userCHARACTERSEQUENCE@domain.com в качестве так называемой «медовой точки», чтобы обнаружить адреса отправителей и заблокировать их от спам-атак.

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

Изменение строки на противоположную

CSS можно использовать не только для скрытия дополнительных символов в исходном коде, но и для реверсирования строки. Это позволяет операторам сайтов хранить адреса электронной почты в неправильном порядке в исходном коде, чтобы обмануть спам-ботов.

<style type="text/css">
span.ltrText {unicode-bidi: bidi-override; direction: rtl}
</style>
<p>If you have any questions or suggestions, please write an email to:
<span class="ltrText"> moc.niamod@resu</span>.
</p>

В то время как спам-боты находят в исходном коде строку символов moc.niamod@resu, свойство CSS unicode-bidi гарантирует (вместе со значением bidi-override), что все символы внутри соответствующим образом выделенных элементов span будут прочитаны браузером именно так, как их задумало направление качества — в данном случае справа налево (rtl).

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

Динамическая композиция с помощью JavaScript

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

<script type="text/javascript">
var part1 = "user";
var part2 = Math.pow(2,6);
var part3 = String.fromCharCode(part2);
var part4 = "domain.com"
var part5 = part1 + String.fromCharCode(part2) + part4;
document.write("If you have any questions or suggestions, please write an email to:
   <href=" + "mai" + "lto" + ":" + part5 + ">" + part1 + part3 + part4 + "</a>.");
</script>

В строках 2-6 определены отдельные части адреса электронной почты. Знак @ определяется в два этапа. Функция Math.pow(2,6) в части2 определяет номер знака в наборах символов, совместимых с ASCII (26 = 64). Он преобразуется в соответствующий символ в части3 функцией String.fromCharCode(part2). Вывод частей, определенных в part1 — part5, осуществляется в строках 7 и 8 функцией document.write(). Адрес электронной почты становится доступным только после выполнения сценария на стороне клиента. Возможен также вариант, когда скрипт запускается только после того, как пользователь щелкнул мышью.

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

Шифрование адреса электронной почты

С помощью JavaScript адреса электронной почты можно не только собирать из отдельных частей, но язык сценариев также позволяет шифровать адрес электронной почты, чтобы защитить его от спама. Распространенным методом шифрования электронной почты является ROT13, который можно реализовать с помощью всего нескольких строк JavaScript.

<script type="text/javascript">
function decode(a) {
  return a.replace(/[a-zA-Z]/g, function(c){
    return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) 
                               ? c : c - 26);
  })
}; 
function openMailer(element) {
var y = decode("znvygb:orahgmre@qbznva.qr");
element.setAttribute("href", y);
element.setAttribute("onclick", "");
element.firstChild.nodeValue = "Open email software";
};
</script>
<a id="email" href=" " onclick='openMailer(this);'>Email: please click</a>

В строке 9 кода примера показана зашифрованная версия адреса электронной почты user@domain.com, включая текстовую строку mailto (znvygb:orahgmre@qbznva.qr), а также то, как она должна быть зашифрована (в строках со 2 по 7). Функция в строках с 8 по 13 открывает предпочитаемую пользователем почтовую программу и записывает расшифрованный адрес в поле получателя.

Сценарий запускается при нажатии на ссылку с якорным текстом ‘Email: пожалуйста, нажмите’ (строки с 15 по 16). После нажатия на ссылку появляется текст ‘Открыть почтовую программу’ (строка 12).

Как и в случае с составлением адреса электронной почты на основе JavaScript, метод шифрования основан на предположении, что спам-боты не могут интерпретировать весь язык сценариев на стороне клиента или могут интерпретировать его лишь частично. Теоретически, зашифрованный адрес электронной почты может быть использован в качестве honeypot. В этом случае домен не должен быть зашифрован.

CAPTCHAs

CAPTCHA предоставляют возможность защитить адрес электронной почты от спама. Зашифрованные адреса электронной почты отображаются в виде обычного текста только в том случае, если проверка показала, что пользователь является человеком. Такие проверки бывают разных форм, например, просят пользователя набрать комбинацию букв или цифр. Простые вычисления, комбинированные задачи и головоломки также являются вариантами CAPTCHA. Бесплатная услуга CAPTCHA предоставляется компанией Google с помощью reCAPTCHA.

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

Альтернатива: форма обратной связи?

Вместо размещения адреса электронной почты на своем сайте многие операторы сайтов предоставляют форму обратной связи, которая позволяет посетителям вводить свои сообщения, а также оставлять свое имя и контактный адрес. Они перенаправляются в фоновом режиме на сохраненный адрес получателя. Интегрировать ее в веб-сайт можно с помощью языков программирования на стороне сервера, таких как PHP. Для того чтобы спам-боты не могли автоматически заполнять и отправлять эти формы, они обычно защищены CAPTCHA.

Заключение

Стратегия, которую вы должны использовать для защиты адреса электронной почты, зависит в первую очередь от того, какие требования к представлению информации необходимо выполнить и какие технические возможности имеются в наличии. Перенаправление на ссылку mailto с помощью PHP или аналогичных серверных языков программирования является хорошим методом защиты. Однако это должно поддерживаться хостингом. Если вы решили указать адрес электронной почты на своем сайте, рекомендуется отображать его в виде графики.

Транскрипция, а также кодирование с использованием HTML-сущностей, HEX-кода или URL-кодирования обеспечивают меньшую защиту. Однако последние являются предшественниками для любого последующего шифрования. Маскировка или шифрование с помощью JavaScript обеспечивает надежную защиту от спам-ботов, и вы также можете рассмотреть возможность графического представления адреса электронной почты. Это определенно хорошая идея, когда адрес создается не на сайте, а только в обработчике mailto.

  • Безопасность электронной почты

    Оцените статью
    cdelat.ru
    Добавить комментарий