Emerkove osobne stránky - Miroslav Rác

RSS
  13. december 2009

Ochrana mailovej adresy pred robotmi

V poslednej dobe je čoraz väčší problém so spamom. Preto som sa rozhodol napísať článok, s nejakými spôsobmi, ako sa proti tomu chrániť tak, aby ste mohli bez obáv zverejniť svoju e-mailovú adresu. Avšak, v dnešnej dobe existujú roboty, ktoré si dokážu poradiť s akoukoľvek ochranou. Môžeme e-mailové adresy schovávať do obrázkov alebo pomocou javascript. Tým ale môžeme odradiť potenciálneho zákaznika, ktorý môže byť internetovým lenivcom a nebude sa namáhať opisovaním adresy z obrázku. Navyše pri zložitejších adresách môže dôjsť k preklepom a e-mail sa nikdy nedoručí.

Viackrát som videl, ako niekto niekto prepisoval adresy tak, že zamieňal zavináč a bodku za nejaké reťazce - najčastejšie @ = (at),(kaper) a . = (dot). Tieto spôsoby podľa môjho názoru nie sú účinné, pretože robot vyhľadávajúci adresy podľa mailto: a nie zavináču s tým žiadny problém mať nebude. A ak dáme za mailto: variant s (at), klient bude musieť adresu prepisovať.

Javascript

Zrejme najúčinejšou ochranou je vypisovanie adries pomocou javascriptu. Robot by musel najprv vykonať skript, čo na 99% nespraví. Tu ale nastáva problém s užívateľmi, ktorí nemajú povolený javascript. Tých je stále dosť a môžeme stratiť záujemcu o naše služby.

Prvá z možností, je prevod do ASCII. Ale to robilo problémy robotom vytvoreným pred možno 10 rokmi. Ak by ste to však chceli skúsiť, pomôže vám tento jednoduchý konvertor.

  • #&65;#&104;#&111;#&106;#&32;#&115;#&118;#&101;#&116;#&33;
  • <script type="text/javascript">
  • var str="emailova@adresa.sk";
  • for(i=0;i<str.length;i++){
  •   document.write('#&'+str.charCodeAt(i)+';');
  • }
  • </script>

Ďalšou možnosťou, je uchovávať adresy v poli a vypisovať ku konkrétnemu odkazu. Ak by robot prehľadával aj JS súbory, môžeme ich mať uložené v ASCII a konvertovať ich na text. Pre túto možnosť som spravil jednoduchý skript.

  • var from = '#&65;#&104;#&111;#&106;#&32;#&115;#&118;#&101;#&116;#&33;'; //môže byť v tvare "65;104;11;106;32;115; ..."
  • var broken = from.split('#&').join('').split(';');
  • for(i=0;i<broken.length;i++){
  •   document.write(String.fromCharCode(broken[i]));
  • }

CSS

Aj pomocou kaskádových štýlov sa môžeme pokúsiť chrániť našu adresu. Použijeme vlastnosti direction a unicode-bidi, ktoré otočia text. A do odkazu napíšeme adresu odzadu. To však nerieši problém, keďže robot vyhľadáva adresu pomocou mailto: a nie zavináču. Čiže túto možnosť budeme musieť kombinovať s inými metódami.

  • <a style="direction: rtl;unicode-bidi:bidi-override" href="mailto:adresa@domena.sk">ks.anemod@aserda</a>

Výsledok bude vypadať takto: ks.anemod@aserda

PHP

Tento problém môžeme riešiť aj s využitím PHP. Vytvoríme si php súbor (napr. sendemial.php) s kódom

  • <?php
  • header('Location: mailto:adresa@domena.sk');
  • ?>

Následne používame v odkazoch iba

  • <a href="sendemail.php">zaslať mail</a>

Ak by sme mali viac adries, torchu upravíme kód

  • <?php
  • $mails = array('adresa1@domena.sk', 'adresa2@domena.sk', 'adresa3@domena.sk');
  • $to = isset($_GET['to']) ? $mails[intval($_GET['to'])] : $mails[0];
  • header('Location: mailto:'.$to);
  • ?>
  • <a href="sendemail.php">zaslať mail</a> //zašleme mail na adresa1@domena.sk
  • <a href="sendemail.php?to=0">zaslať mail</a> //zašleme mail na adresa1@domena.sk
  • <a href="sendemail.php?to=1">zaslať mail</a> //zašleme mail na adresa2@domena.sk
  • <a href="sendemail.php?to=2">zaslať mail</a> //zašleme mail na adresa3@domena.sk

Formulár

Môžeme používať formulár na webe, slúžiaci na odoslanie mailu. Adresa sa nezobrazí a o spam sa postará filter. Tým znemožníme odosielať mail užívateľom, ktorí si chcú adresu napríklad zapísať a neskôr poslať rozsiahlejší e-mail pomocou klienta.

Záver

Aspoň o ako-takú ochranu sa môžeme pokúsiť kombináciou viacerých metód. Musíme však dbať na to, aby sme neodradili užívateľa. Roboty sa stále zdokonaľujú a zabezpečenie sa stáva bezvýsledným.

Najlepším riešením je používanie spam filtrov. Ja používam Gmail, a tam mi do schránky spam neprešiel, ani nepamätám.


Článok napísal Miroslav Rác 13. decembra 2009
vybrali.sme.sk


0 príspevkov

Diskusia

V diskusii pre tento článok ešte nie je žiadny príspevok.

Pridať komentár

Meno:
Predmet:
Text:Kontrola proti spamu
Menu Vyhľadávanie
  • Na stránke momentálne nie je možné vyhľadávať
Moje poznámky
  • 16. marca 2010 o 11:58:46:
    Na hodnotenie komentárov som použil správny výpočet podľa vzorcu uvedenom v dosť poučnom článku. Viac v rubrike Oplatí sa vidieť.
  • 1. januára 2010 o 13:29:02:
    Prajem vám šťastný a hlavne úspešný nový rok :)
  • 12. decembra 2009 o 23:51:55:
    Predmet v komentároch je už naozaj nepovinný :)
Používatelia
  • Je tu prítomných 2 používateľov.
emer, 2010

Na tomto blogu su vyjadrené moje myšlienky, názory a postoje k určitým veciam alebo udalostiam. Preto upozorňujem, že to čo tu napíšem nemusí byť 100% pravda a aj ja sa môžem zmýliť, alebo mať odlišný názor na vec. Texty neprešli jazykovou kontrolou.