-->
   
-->

Главная

ТАРИФЫ ХОСТИНГА
АРЕНДА СЕРВЕРОВ
КЛИЕНТАМ
ТЕХ. ПОДДЕРЖКА
РЕССЕЛЕРАМ
ПРОГРАММЫ И УСЛУГИ
ИНФОРМАЦИЯ
О КОМПАНИИ

  

AntiSpam: Прячем Емайлы

 

Опубликовано:
23.11.04

Источник: Источник: http://www.webscript.ru/

AntiSpam: Прячем Емайлы

Технологии защиты email адресов на сайтах обсуждают достаточно давно. Web-разработчики постоянно изобретают механизмы сокрытия электронных адресов, или значительного усложнения процесса их автоматического сбора. Понятно, что единого и универсального решения, которое устраивало бы и разработчиков и посетителей сайтов не существует. Те что есть, широко используются, но со временем устаревают. Злодеи-спамеры находят пути решения или обхода применяющихся технологий. То решение, которое я хочу вынести на ваш суд, не является универсальным и абсолютным . Но применяя его сейчас, можно еще какое-то время успешно усложнять жизнь тем, кто наживается на нашем времени и нервах, воруя и продавая базы с награбленными Емайл-базами.
К данному решению я пришел тогда, когда четко и ясно определил чего хочу я (как разработчик), чего хотят посетители моего сайта и чего ждут от моего сайта спаммеры. Чтобы вы с легкостью следовали за моими рассуждениями, буду писать так, как, когда-то, рассуждал сам.


Чего хотят разработчики:

Незначительные требования кода к ресурсам сервера
Легкость контроля и модернизации кода
Небольшого количества кода
Гарантия сокрытия ВСЕХ email адресов, которые могут находиться в тексте страниц сайта
Чего хотят рядовые посетители сайта:

Возможность безбоязненно оставлять свои электронные адреса в различных разделах сайта
Возможность работы с Email адресами других посетителей, так же как и обычно (доступ через один клик)
Чего хотят спаммеры:

Наличия в исходном коде страницы электронных адресов, открытом виде.
При желании можно пополнить списки требований, но эти, на мой взгляд, являются основными. Наибольшая эффективность работы будет в том случае, если на сайте используется система шаблонов. Так как в этом случае можно скрывать адреса которые могут встретиться в теле страниц, например email администратора, владельца сайта и т.д.
Кратко о том, как это должно работать. У нас есть страницы сайта, статические (готовые) и динамические (формирующиеся в процессе запроса пользователя). При запросе статической страницы, мы должны обработать весь текст страницы, сделать необходимое преобразование встреченных емайл адресов, отдать текст в браузер. При формировании динамических страниц, мы можем преобразовывать встреченные емайл адреса прямо в процессе, а можем записать весь результат выполнения в переменную, обработать, а потом отдать в браузер.
Вас наверное уже давно мучает вопрос, что же я собираюсь преобразовывать? Поясню основной принцип сокрытия адресов. При нахождении в тексте страницы емайла, мы заменяем его на специальную ссылку. Пример:

Исходный текст:
... а вот мой ящик: superuser@downmail.ru Как приедешь назад, напиши мне как провел отпуск ...

Текст страницы после обработки:
... а вот мой ящик: <a href="./mailto.php?email=fhcrehfre@qbjaznvy.eh">email</a> Как приедешь назад, напиши мне как провел отпуск...

То есть, каждый найденный email мы шифруем, при этом шифр должно быстро и однозначно преобразовываться к исходному состоянию. Сложность алгоритма шифрования ограничен только интеллектуальными способностями разработчика ))) В принципе можно воспользоваться стандартной php функцией str_rot13(). Она просто сдвигает каждый символ в строке на 13 позиций, неалфавитные символы остаются без изменений. Единственный минус от ее повсеместного использования может заключаться в том, что зная что за преобразование используется на сайте можно легко его обойти. То есть спаммер соберет зашифрованные емайлы, а потом запустит простейший скрипт на PHP, который произведет обратное преобразование. Поэтому, если вам кажется, что данная функция не обеспечивает достаточного уровня защиты адресов, пишите свою. Но в нашем примере будет использоваться именно она.
Что же происходит дальше? А ничего сложного, Если пользователь захочет написать письмо своему знакомому, в своей любимой почтовой программе, то он инстинктивно "кликнет" на нашей ссылке email. Таким образом значение переменной email будет передано в скрипт mailto.php . В нем произойдет процесс обратного преобразования емайла, с помощью все той же функции str_rot13(). Далее в скрипте mailto.php происходит вызов функции Header("Location: mailto: ::."); Где после mailto: будет стоять тот самый адрес который и нужен посетителю. Получив этот заголовок, любой нормальный браузер передаст управление стандартной почтовой программе. В которой счастливый пользователь и напишет столь желанное письмо.
Если у вас осталось некоторое непонимание или возникли вопросы по реализации, то могу предложить вам рабочую версию примера. Конечно, он далек от того, чтобы его повсеместно использовать, так как я его намеренно упростил. Но он развеет все ваши остаточные неясности, и вы поймете, о чем это я так долго тут рассказываю.
    В примере есть три файла:
"    index.php
"    index.txt
"    mailto.php

index.php:


--------------------------------------------------------------------------------

<?php
/*
    Основной скрипт, отображает содежимое файла index.txt, с заменой всех емайлов
*/

function hide_email($IN_TEXT) {
/*    Взрываем текст по пробелам, и результат будет в массиве $TEMP_ARR    */
    $TEMP_ARR = explode(" ",$IN_TEXT);
/*    Проходим в цикле по всему массиву (а получается что по всему тексту)    */
    for ($x=0; $x<sizeof($TEMP_ARR); $x++) {
/*        Ищем текст который очень похож на емайл    */
        if (preg_match("/^(.+)@(.+)\\.(.+)$/",$TEMP_ARR[$x])) {
/*            Меняем емайл на нашу ссылку, которая в качестве параметра передает результат работы функции move_string()    */
            $OUT_TEXT .= '<a href="./mailto.php?email='.str_rot13($TEMP_ARR[$x]).'" target="mailto_frame">email</a> ';
        }
/*            Оставляем все как есть, только добавляем пробел в конец     */
        else    $OUT_TEXT .= $TEMP_ARR[$x].' ';
    }
    return $OUT_TEXT;
}

$CONTENT_TEXT = file_get_contents('index.txt');
$CONTENT_TEXT = hide_email($CONTENT_TEXT);

?>
<html>
<title>Anti spam - Пример</title>
<body bgcolor="#ccccff">
<? echo $CONTENT_TEXT; ?>
<IFRAME NAME="mailto_frame" width="0" height="0"></IFRAME>
</body>
</html>


--------------------------------------------------------------------------------

Функция hide_email() получает текст страницы. В результате ее работы возвращается тот же текст, но все емайл адреса заменены нашими ссылками. IFRAME в данном случае используется как цель для всех ссылок с емайлами. Это нужно для того чтобы не открывалось еще одно окно, из за функции Header(), при работе файла mailto.php

 

index.txt:


--------------------------------------------------------------------------------

Текст содержащий электронные адреса. Текст user@coolmail.ru содержащий электронные адреса. <br>
Текст содержащий электронные адреса. Текст содержащий электронные адреса. lamer@fatbox.com <br>


--------------------------------------------------------------------------------

В файле index.txt просто какой-то текст, который содержит адреса электронной почты.

 

mailto.php:


--------------------------------------------------------------------------------

<?php
/*
    Обратное преобразование емайла, и отправка его браузеру
*/

if (isset($_GET['email'])) {
    Header("Location: mailto:".str_rot13($_GET['email']));
}
?>


--------------------------------------------------------------------------------

В mailto.php приходит переменная $email, через GET запрос. Она содержит зашифрованный вариант адреса. Мы ее преобразуем в исходное состояние и отдаем браузеру.

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


Версия для печати

Назад

Проверить домен

ru  com net

Новости компании

02.04.10
Технические работы на сервере!

В пятницу 3-го апреля 2009 г. возможен кратковременный перерыв в работе сервера с 17 до 18 часов в связи с проводимыми техническими работами. ...


08.09.08
ВНИМАНИЕ!!! Пользователям сервера PRO-HOSTING!

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


15.04.08
Новая рекламная акция нашей компании.

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


01.02.08
Специальная акция "Автоматизируй свой сайт"

Скидка 30% на покупку системы управления сайтом SSPRO. Установка системы управления производится бесплатно. Подробнее о системе управления сайтом смотрите на странице: Система управления сайтом ...


20.12.07
С новым 2008-м годом

Поздравляем всех клиентов и посетителей сайта с новым 2008 годом, желаем успехов в новом году, здоровья и счастья. Коллектив ООО " ССПРО ХОСТИНГ"  ...


06.02.07
Профилактические работы на сервере

Уведомляем Вас о том, что 06/02/2007 на сервере ONLINEHOST.RU администраторами датацентра "STACK" запланировано отключение электропитания, связанное с профилактическими работами на монтажной стойке. Н...



Ваш проект:


Коммерческий
Коммерческий
Коммерческий


2002-2009 (с) ООО "ССПРО Хостинг"
+7 495 77-88-33-9  Карта сайта,
Разработка сайта Cве-Арт | Cms Sspro