Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Защита e-mail
При разработке доски объявлений недвижимости я столкнулся с необходимостью обеспечить безопасность адресов электронной почты.
Для этого решил выводить электронные адреса в виде картинок, а mailto: реализовать с помощью javascript.
Вот так выглядит вывод адреса почты в коде страницы:
e-mail: <a href="" onclick="this.href='mailt'+'o:kdg'+'@aaanet.ru'"><img src="mail.php?m1=kdg&m2=aaanet.ru"></a>';
А это код, который формирует изображение с e-mail-ом:
// две части адреса
$m1=@$_GET['m1'];
$m2=@$_GET['m2'];
$m=$m1.'@'.$m2;
// размер встроенного шрифта 1..5
if(!isset($_GET['s']))$s=4;
else{
$s=intval(@$_GET['s']);
if($s<=0) $s=1;
if($s>5)$s=5;
}
// коэффициенты подобраны эмпирическим путем
$im = imagecreate(($s+3.2)*1.2*strlen($m), ($s+3)*2.4);
// белый фон
imagecolorallocate($im, 255, 255, 255);
// синий текст
$textcolor = imagecolorallocate($im, 0, 0, 255);
imagestring($im, $s, 1, 0, $m, $textcolor);
header("Content-type: image/png");
imagepng($im);
Код, который формирует две переменные из которых будет собираться адрес электроннй почты:
if($row['mail']){ list($m1,$m2)=explode("@", $row['mail']);
echo '<br>e-mail: <a href="" onclick="this.href=\'mailt\'+\'o:'.$m1.'\'+\'@\'+\''.$m2.'\'">
<img src="mail.php?m1='.$m1.'&m2='.$m2.'"></a>';}
Эта защита не идеальная, но сильно осложняет жизнь хакеру. Для улучшения защиты можно предпринять следующие шаги:
- Полностью удалить из кода упоминание о e-mail. Это можно сделать с использованием технологии Ajax или с помошью обратимого шифрования и расшифровки на javascript.
- При формировании объявления сохранять изображение его E-mail на диск и ссылаться на него по имени файла.
- При формировании изображения делать смещение и наклон букв, т.к. уже существуют системы, которые разбирают каптчи. А это изображение не сложнее простейших каптч. Как вариант, полностью отказаться от изображения адреса почты, заменив его на символ почты или надпись "отправить письмо".
- Ну и для абсолютно параноидальной защиты электронной почты можно сделать форму отправки письма и отправлять его с помощью функции php mail. В этом случае ни отправитель, ни хакер никак не узнают адрес получателя.
.
Прокомментировать/Отблагодарить