Jak skrýt emailovou adresu před spammery?

Verze pro tiskPDF verze

Ukážeme si zde většinu metod jak lze skrýt na webových stránkách přítomnost emailové adresy před spamboty (email harvestery), kteří automatizovaně přidávají adresy na seznamy spammerů. Jde primárně o snahu portálů, aby takto zabezpečili své zákazníky/čtenáře před stovkami emailů denně. (což se v dnešní době neděje...)

Dnešní doba je zlá. Člověk neznalý bezpečnosti a hrozeb Internetu nemá prakticky dnes šanci. Průměrná doba napadení OS Windows bez Firewallu, Antiviru, Antispywaru apod. je 15 minut a pokud má nešťastlivec veřejnou IP adresu, tak i míň (stalo se mi, že než jsem stačil stáhnout firewall, tak už byl PC nakažen červem). Ostatní operační systémy jsou na tom lépe, ale SSH démona na Linuxu rozesílajícího spamy přes Japonské SMTP servery už jsem na vlastní oči (ehm, i mašině) viděl také.

Koncové uživatele rozesílání spamů, či DoS/DDoS útoků na vybrané cíle moc nerozčiluje pokud vše beží jak má, i když třeba je ten počitač teď trochu pomalejší a zobrazení internetové stránky trvá celou věčnost. ...takováto ignorance mě opravu dokáže rozčílit.

Vraťme se však k tématu, které koncové uživatele i citelně znervózňuje a tím jsou stovky emailů v jejich webových poštovních schránkách či emailových klientech.

Někteří emailoví klienti mají antispamový filtr integrován v sobě. Nekteří hůře (outlook), někteří lépe (thunderbird), ale né všechny spamy dokáží zachytit (obrázkové, 3D spamy, …).

Nejlepší by bylo, aby se spameři o Vaší emailové adrese nedozvěděli. Jak ji ale zpřístupnit ostatním? Např. na svých webových stránkách, v profilu na portálu apod.? Řekněme si ze začátku pár vstupních technik, které bychom měli dodržovat, aby se adresy nedostali ke spamerům i jinou cestou.

Doporučení:

A) Pokud rozesíláte nějaké úsměvné emaily svým kamarádům, tak je vždy dávejte do skryté kopie (Bcc - Blind Carbon Copy) a i je upozorněte, aby takto zasílali zprávy. Příjemce tak neuvidí komu dalšímu byl email zaslán. V případě řetezových emailů může totiž spammer takto získat stovky platných emailových adres.

B) Upozorněte ostatní, že pokud přeposílají váš email, tak ať smažou hlavičku zprávy. (je v ní uloženo od koho [od vás] dostal odesílatel email a další podrobnosti)

C) Nikdy se nazapisujte a nerozesílejte hloupé řetězové emaily. Postup jak poznat hoax apod. hlouposti je zkotrolovat zprávu na http://www.hoax.cz

D) NIKDY neodpovídejte na spamy (i kdyby tam byl odkaz, kterým „zrušíte“ zasílání zpráv). Tím by pak spameři věděli, že je emailový účet aktivní.

E) Pokud možno se neregistrujte na velkých diskuzních skupinách. Kolují tam zprávy z platných emailových adres a někdou jsou i emailové adresy účastníku zobrazeny na webu serveru.

F) Vždy mějte aktualní verzi emailového klienta a pokud možno se vyvarujte všem, které pocházi z dílny Microsoftu, protože právě na tyto se nejvíce spameři zaměřují a hledají v nich chyby (kterých je nemálo). Dobrou alternativou je např. Thunderbird ( http://thunderbird.czilla.cz/ ). Obsahuje poměrně dobrý antispamový filtr a je možné do něj doinstalovat spoustu dalších doplňků, které ještě zvýší jeho bezpečnost ( https://addons.mozilla.org/cs/thunderbird/browse/type:1/cat:66 ).

Základy komunikace máme za sebou. Nyní přejdeme k poměrně zajimavější a obsáhlejší sekci, ve které si ukážeme jak skrýt svou emailovou adresu před boty, které prochází internetové stránky a prohledávají veškerý obsah na přitomnost platné emailové adresy.

Základní (ne-funkční) metody

Co je možné vidět v dnešní době nejvíce je skrytí emailové adresy v podobě upravené/pozměněné adresy.

Příklady:

jmeno.prijmeni (zavináč) mojedomena.cz

jmeno.prijemni (at) mojedomena (dot) cz

[email protected]

Pro čechy je určitě lepší použít (zavináč), než (at) protože stejně většina vyhledávacích botů s tímto počíta a hledá i text, kde je * (at) *.* Českých zatím moc není, takže (zavináč) vás dočasně dokáže ochránit. Nicméně stačí jeden scriptík a je tomuto pravidlu konec. Rozhodně se nejedná o zabezpečení.

Závěr: nepoužívat žádnou z těchto metod

Použítí kódování některých znaků

Znak zavináče i ostatní lze zapsat v jiném kódování. Na stránce se zobrazí normálně, ale ve zdrojovém kódu to vypádá takto:

Příklad:

» Unicode

<a href=“mailto:jmeno&amp;#46;prijmeni&amp;#64;mojedomena&amp;#46;cz“>Pošli mi mail</a>

-- &#46; je zápis znaku tečky a &#64; je zápis zavináče

Taky můžeme změnit vše:

<a href="&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#116;&amp;#111;&amp;#58;
&amp;#106;&amp;#109;&amp;#101;&amp;#110;&amp;#111;&amp;#46;&amp;#112;&amp;#114;
&amp;#105;&amp;#106;&amp;#109;&amp;#101;&amp;#110;&amp;#105;&amp;#64;&amp;#109;
&amp;#111;&amp;#106;&amp;#101;&amp;#100;&amp;#111;&amp;#109;&amp;#101;&amp;#110;
&amp;#97;&amp;#46;&amp;#99;&amp;#122;">Pošli mi mail</a>

Jednoduše např. zde: http://www.lerneniminternet.de/htm/tip_spam-email.html

» Hexadecimal

Příklad:

<a href=“mailto:%6A%6D%65%6E%6F%2E%70%72%69%6A%6D%65%6E%69%40%6D
%6F%6A%65%64%6F%6D%65%6E%61%2E%63%7A“>Pošli mi mail</a>

Toto se např. používalo již v IBM Lotus Notes 6, zde máte jejich automatizovaný PERL script.
#! /usr/bin/perl
# Little perl program to convert ascii email addresses to hex
# to avoid spam harvesting from mailto: tags
my $addr = shift or die "usage: $0 email\@address.dom\n";
$addr =~ s/(.)/ sprintf('%%%2x',ord($1)) /ge;
chomp($addr);
print "$addr\n";

Na internetové stránce to vypadá normálně a pokud vyhledávací bot s jiným kódováním nepočítá, tak je tato metoda vůči nalezení imunní. Ale do kdy?

Závěr: lepší řešení než předchozí, ale také nedoporučuji používat.

HTML komentáře

Vyhledávací bot je naprogramován, aby hledal určitý řetezec, který by mohl odpovídat emailové adrese. Můžeme však do adresy zapsat ruzné znaky, které prohlížeč nezobrazuje/nebere v potaz a tím se tomuto filtru vyhnout.

Příklad:

<u>jmeno</u><!-- >@. --><u>.prijmeni</u><!-- >@. --><u>@</u><!-- >@. --><u>mojedomena</u><!-- >@. --><u>.</u><!-- >@. --><u>cz</u>

Do pole komentáře můžeme vložit naprosto cokoliv. V tomto případě zavináče pro zmatení vyhledávacího algoritmu. Fantazii se meze nekladou.

Závěr: pokud vyhledávací bot počítá i s tímto, tak ze zdrojového kódu dokáže emailovou adresu dostat. Je to však bezpečnější než předešlé metody.

Ukázkový script, který převádí emailovou adresu do hexadecimální tvaru a zároveň vkládá komentáře lze nalézt zde: http://perassi.org/quickhacks/aec/aec.txt

Možnosti skrytí za pomocí CSS stylů

» pseudo-element (:after)

Od verze CSS2 je možné použít pseudoelementy :before a :after, které označují začátek a konec elementu. My je využijeme k vložení emailové adresy.

Příklad:

p:after { content: "jmeno.prijmeni\40mojedomena.cz"; }
<p>Napiš mi: </p>

Zobrazí: Napiš mi: [email protected]

Řetězec \40 je zástupný znak pro zavináč. Více informací zde:
http://interval.cz/clanky/css2-automaticky-generovany-obsah/

» unicode-bidi

unicode-bidi umožnuje určit orientaci/tok textu. Jeden příklad za všechny:

Příklad:

span.otoc_text { unicode-bidi:bidi-override; direction: rtl; }

<p><span class="otoc_text">[email protected]</span></p>

Vlastně zapíšeme jen emailovou adresu pozpátku a CSS se postará o překlad.

» display:none

Příklad:

p span.skryjtext { display:none; }

<p>jmeno.prijmeni@mojedomena<span class="skryjtext">blabla@[email protected]</span>.cz</p>

Vše co je v elementu skryjtext se nezobrazí.

Závěr: dobé vědět, špatné používat. :) Tak proč o tom píšu? Když zde popsané metody mezi sebou nakombinujete, tak lze dosáhnout poměrně dobré bezpečnosti. Proto uvádím všechny známé metody.

Pro vášnivé badatele tu mám ještě jednu lahůdku :o)
Font vykreslený pomocí CSS stylů! Také může být velice učinné při ochraně
( http://www.cssplay.co.uk/menu/cssfont.html )

HTTP Redirect

Můžeme prohlížeči předat emailovou adresu jako změnu lokace/adresy. Vetšina si s tím dokáže poradit a spustí emailového klienta s vaší předvyplněnou adresou.

» PHP redirect

Příklad:
Na stránce bude odkaz <a href=“./muj_mail.php“>Pošli mi mail</a>

muj_mail.php bude vypadat takto:

<?php
        header ("Location: <a href="mailto:[email protected]"" title="mailto:[email protected]"">mailto:[email protected]"</a>);
        exit();
?>

Prohlížeč změní lokaci a předá adresu emailovému klientu.

» mod_rewrite redirect

Tento návod jsem našel na stránce: http://www.spamshiv.com/solutions/mod-rewrite.php
Co je mod_rewrite u webového serveru Apache asi víte všichni. Připomenu však, že je to způsob jak jinak interpretovat URL. Např. Máme adresu http://www.mojedomena.cz/osobni/kontakt která nás vlastně nasměruje na URL http://www.mojedomena.cz/kontakt.php
Výhoda a) pěkné URL b) SEO (může být v URL např. název článku... jako zde na SP)
My tuto funkci však využijeme ke skrytí emailové adresy.

Vytvoříme si např. složku „mail“ v rootu domény: http://www.mojedomena.cz/mail/
Do složky mail umístíme soubor „.htaccess“, který bude obsahovat:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Mail Link - mail/domain/ext/user
RewriteCond %{REQUEST_URI} ^/mail/(.*)/(.*)/(.*)$
RewriteRule ^.* <a href="mailto:%3@%1.%2" title="mailto:%3@%1.%2">mailto:%3@%1.%2</a> [R]

Poté už stačí zadat jen odkaz na svou emailovou adresu:
http://www.mojedomena.cz/mail/mojedomena/cz/mujmail/

Což předá emailovému klientu adresu: [email protected]
Elegantní :)

Email schovaný v Javascriptu

» spojování slov

Příklad:

<script language="JavaScript" type="text/javascript">
<!--
        var string1 = "jmeno.prijmeni";
        var string2 = "@";
        var string3 = "mojedomena.cz";
        var string4 = string1 + string2 + string3;
        document.write("<a href=" + "mail" + "to:" + string1 +
                string2 + string3 + ">" + string4 + "</a>");
//-->
</script>

Tento script vypíše odkaz na emailovou adresu na stránku. Pokud vyhledávací bot nezpracovává Javascript, tak mu unikne.
Email je vlastně jen rozsekán, aby nebyl pohromadě (a tedy i identifikovatelný) a složen v document.write (výpis na stránku).

Závěr: nedoporučuji používat takto jednoduchý algoritmus. Pokud však máte s javascriptem nějaké zkušenosti, tak ho můžete pozměnit a zvýšit tak jeho bezpečnost.

» substituce pomocí ROT13

Na stránkách http://scott.yang.id.au/2003/06/obfuscate-email-address-with-javascript-rot13/ jsem našel script Rot13.js

Ukázka:

Rot13 = {
    map: null,

    convert: function(a) {
        Rot13.init();

        var s = "";
        for (i=0; i < a.length; i++) {
            var b = a.charAt(i);
            s += ((b>='A' &amp;&amp; b<='Z') || (b>='a' &amp;&amp; b<='z') ? Rot13.map[b] : b);
        }
        return s;
    },

    init: function() {
        if (Rot13.map != null)
            return;
             
        var map = new Array();
        var s   = "abcdefghijklmnopqrstuvwxyz";

        for (i=0; i<s.length; i++)
            map[s.charAt(i)] = s.charAt((i+13)%26);
        for (i=0; i<s.length; i++)
            map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();

        Rot13.map = map;
    },

    write: function(a) {
        document.write(Rot13.convert(a));
    }
}

Díky němu pak už stačí jen do stránky vložit tvar odpovídající ROT13:

<script type="text/javascript">
    Rot13.write('<n uers="znvygb:[email protected]">[email protected]</n>);
  </script>

Závěr: použitelné. V kombinaci s ostatními velice účinné.

» několik algoritmů najednou

Příklad:

<script type='text/javascript'><!--
var v2="2VNHECZFWH8T5UI5G2WJRUDWKJAQ";
var v7=unescape("X%3B+%26*m*4%3E%22U1%5B%3C%09X%28X2.%3D8%219*d%22+");
var v5=v2.length;
var v1="";
for(var v4=0;v4<v5;v4++){v1+=String.fromCharCode(v2.charCodeAt(v4)^v7.charCodeAt(v4));}
document.write('<a href="javascript:void(0)" onclick="window.location=
\'mail\u0074o\u003a'+v1+'?subject='+'\'">'+'Pošli mi mail<\/a>');
//--></script><noscript><a href='http://w2.syronex.com/jmr/safemailto/#noscript'>
Pošli mi mail (spam protection)</a></noscript>

Tento script (jeho vygenerování) je o dost složitejší, ale každý si ho může jednoduše vygenerovat na stránkách http://w2.syronex.com/jmr/safemailto/. Používá různé algoritmy a kódování pro skrytí emailové adresy.

Závěr: vzhledem k tomu, že vygenerování a umístění na váš web zabere pár sekund, tak je to dobrá (a bezpečná) volba i pro naprosto neznalé.

Emailová adresa zašifrována pomocí Javascriptu

Na stránkách Email Protectoru ( http://www.jracademy.com/~jtucek/email/download.php ) si můžete vyzkoušet jak mocný je vlastně Javascript. Vyberete si dva klíče, zadáte emailovou adresu a poté si vygenerujete stránku, která zobrazí zašifrovaný odkaz na vaši emailovou adresu. Je nutné mít ve stejném umístění i soubor http://www.jracademy.com/~jtucek/email/emailProtector.js, který provede dešifrování.
Používá se opravdu šifrování pomocí RSA 10-bit klíče.

Závěr: opravdu dobré zabezpečení před spamboty, které lze doporučit. Je možné napsat script, který by to dokázal získat (stejně jako to udělá prohlížeč), ale imho s tímhle se nikdo zabývat nebude. Lousknout jde prakticky cokoliv, záleží na trpělivosti a schopnostech spammera.

Pokročilé skrytí pomocí AJAXu

Pro skrytí emailů můžeme využít i (server-side) session s javascriptem, kdy jsou span IDčka hashována MD5 hashem a volána scriptem. Vygeneruje se tedy standardní session a MD5 hodnoty tvoří ID elementu (např. právě naší emailovou adresu). Tento postup a zdrojový kód poprvé uvedl Arpad Ray a je volně ke stažení na jeho stránkách: http://rajeczy.com/arpad/lib/index.php?p=misc/obfuscate_ajax

Když si projdete zdrojový kód a pochopíte jak funguje, tak zjistíte, že je to opravdu elegantní metoda a vyhledávací bot (email harvester) by už musel mít opravdu velké schopnosti, aby dokázal emailovou adresu zrekonstruovat.

Závěr: tuto metodu lze považovat za bezpečnou pokud si script upravíte k obrazu svému. Script už je na stránkách od roku 2005 a někteří boti by ho už mohli rozpoznat (tento konkrétní typ).

Pozn. Ne každý návštěvník musí mít zapnutý Javascript.

Pozn. Všechny metody lze mezi sebou kombinovat a tím získat vyšší bezpečnost.

Skrytí emailu pomocí CAPTCHA

CAPTCHA je Completely Automated Public Turing test to tell Computers and Humans Apart. A teď česky. Jsou to různé metody, které mají za cíl rozlišit zda s nimi komunikuje člověk nebo nějaký robot. Např. přepsaní deformovaného textu z obrázku, napsání znaků ze zvukového, nebo video záznamu atd.

Setkat se s tím můžete dnes prakticky kdekoliv. Při zadávání komentářů, při registraci i třeba nově na http://www.nic.cz při prohledávání subjektů. Tato metoda má zamezit masovému spamování pomocí automatizovaných robotů (spambotů).

Na druhé stráně je spousta projektů, které nám dokazují, že to opravdu není nepřekonatelná věc.

Gimpy - http://www.cs.sfu.ca/~mori/research/gimpy/
PWNtcha - http://sam.zoy.org/pwntcha/
XRumer - http://www.botmaster.net/more1/
Breaking Captcha - http://www.puremango.co.uk/cm_breaking_captcha_115.php

Kolikrát ty aplikace dokážou rozeznat text na obrázku, ze kterého bych ani já nedokázal nic vyčíst :). Berme to však tak, že tolik spambotů co by i rozpoznávalo text na obrázku není a navíc to lze kombinovat s předešlými metodamy (ne skrytí textu, ale cesty k obrázku atd.) Více infromací o CAPTCHA si můžete přečíst zde: http://en.wikipedia.org/wiki/Captcha

Vraťme se zpět k tématu. Naším cílem tedy bude skrytí emailové adresy do obrázku.

» vytvořte si vlastní obrázek

Můžete si pomocí grafických editorů vytvořit vlastní obrázek, kde bude uvedena vaše emailová adresa. Upozorňuji však, že obyčejný černý text na bílém pozadí opravdu nic neřeší.
Nakombinujte např. několik fontů a barev, dejte do pozadi textu nějaké čáry, rastry apod., aby nebylo jednoduché programem rozpoznat hrany písmen.

» vygenerování obrázku

reCaptcha - http://mailhide.recaptcha.net/
Zádáte do pole svou emailovou adresu a vygenerují se vám dva HTML kódy. První je odkaz, druhý můžete přímo vložit do stránek. Oba dělají téměř to samé. Odkažou vás na vámi vygenerovanou stránku, např:
http://mailhide.recaptcha.net/d?k=01wQr8_3iRirl03IVSonclqw==&c=
gGfpmSJtCfHQrMmtKIvhuTuZcxbwGXkudVnyvqmS1CY=


reCaptcha

-> je to odkaz na který můžete nasměrovat své návštěvníky. Zobrazí se jim stránka s CAPTCHA. Musí buď vyplnit text, nebo zapsat písmena ze zvukového záznamu (v pozadí je slyšet různý rachot, či hlasy lidí pro znemožnění rozpoznání boty :)). Pokud vše proběhne správně, tak se navštěvníkovi zobrazí váš email.

Email-Tag.com - http://www.email-tag.com
Tento web NEdoporučuji! Uvádím ho jako ukázkový případ špatné implementace. Podívejte se jak vypadá jím vygenerovaný obrázek.

Příklad špatné implementace:


Bad example Email-Tag.com

» automatické generování obrázků

Dobrým nastrojem je například EmailCover.com ( http://www.emailcover.com/ )

Příklad:


EmailCover.com

Toto už vypadá mnohem lépe. Ale to není vše. Vygeneruje se vám vlastní URL a pokaždé, když budete přistupovat na tuto adresu, nebo odkazovat na tento obrázek, tak se bude obrázek generovat znovu (bude se měnit s každým refreshem). Toto řešení již lze doporučit.

Pozn. Nemusí se nutně jednat jen o obrázky. Lze využít i email zapsaný např. ve Flashi. Nicméně ne každý uživatel má v prohlížeči podporu technologie Flash. Záleží čistě na vás pro co se rozhodnete.

Jednorázové emaily

Člověk prostě občas potřebuje se někde zaregistrovat, aby si stáhl např. knížku v PDF, nebo si přečetl nějaký článek. I takto spameři získávají platné emailové adresy. Někteří lidé mají jeden email pro takovéto účely a jinak ho nevyužívají, takže jim nevadí ty tisíce spamů. Je i elegantnější řešení.

Mailinator.com ( http://www.mailinator.com/ )
Jedná se o webovou službu jednorázových poštovních schránek. Vyberete si jednoduše jakoukoliv emailovou adresu např. [email protected]. Tu uvedete při registraci na nedůvěryhodném webu a pak jen zadáte do kolonky Check your inbox string: „jhdsfasklsansalk“ a podíváte se, zda došel na tuto adresu nějaký email. Dle mého názoru velice pěkný nápad, který určitě spousta lidí využije.

Závěr

Uff. Snad jsem vám dostatečně objasnil všechny metody, které jsem zde uvedl a vezmete si některou z nich k srdci (..na web). Výběr zaleží na vás a na zvážení rizik/pravděpodobnosti zájmu o váš web/email. Pokud byste našli další zajímavé metody, tak mi je buď napiště do komentáře, nebo zašlete i se zdrojovým kódem na email:


mail na cm3l1k1ho

Přeji stálé méně spamů :)

EOF

Volby prohlížení komentářů

Vyberte si, jak chcete zobrazovat komentáře a klikněte na „Uložit změny“.

Email

Díky, to jsem potřeboval, fakt dobrej výběr!