Gostovanje na Windows strežnikih, ponudba webhosting, ASP.NET, PHP, MySQL


Windows tehnična podpora
Podporni forum za uporabnike storitev spletnega gostovanja
Odgovori na to temo
Skrivanje e-mail naslova pred SPAM roboti
Pico
Site Admin

Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net
Odgovori s citatom
Po instalaciji novega phpBB2 foruma sem videl, da je zadeva v resnici zelo ranljiva in ima cel kup varnostnih lukenj v osnovi. Zato sem forum predelal in odpravil varnostne luknje, poleg tega pa sem na hitro sprogramiral še en MOD za phpBB2, ki ga pred objavo na uradnih straneh predstavljam tukaj.

MOD odpravi pomankljivost phpBB foruma, ki javnosti in vsem neregistriranim uporabnikom razkrije e-mail naslove vseh sodelujočih. To pomankljivost izkoriščajo SPAM roboti, ki skenirajo forume in iščejo e-mail naslove.
PHP MOd, ki je pravzaprav dodatna funkcija, pa odpravi to pomankljivost tako, da e-mail naslove spremeni v ASCII kodo in jih kot takšne izpiše v izvorni kodi.
Brskalnik sam zna te naslove lepo prikazati, vendar če pogledamo v izvorno kodo, ne bomo nikjer našli niti enega samega e-mail naslova Mali vragec

MOD sem prilagodil tudi za uporabo v vaših programih, kjer lahko uporabite 3 načine kodiranja e-mail naslovov.
Koda:
function encode_mail($input_email,$type,$input_email_text="",$at_str="AT",$dot_str="DOT") {
#############################################################################
# Function "encode_mail"
# USAGE:
#       encode_email("e-mail address", output_type, "e-mail text",  [@-text], [DOT-text])
#
# EXAMPLES:
#       encode_email("foo@bar.com",1);
#     will print clickable link foo@bar.com, but will be hidden in source code
#
#       encode_email("foo@bar.com",1,"foobar");
#     will print clickable link foobar, which is also hidden in source code
#
#       encode_email("foo@bar.com",2,"","AT","DOT");
#     will print foo AT bar DOT com
#
# PARAMETERS:
#       "e-mail address" is TEXT type
#                     this is e-mail address which we will encode
#
#       output_type is NUMERIC type
#                     1 - output JavaScript clickable HyperLink
#                     2 - output e-mail in format "your_name AT domain DOT com"
#                     3 - output pure ASCII encoded string
#
#       "e-mail text" is TEXT type and is OPTIONAL parameter
#                     this is text to be shown instead of e-mail address
#                     only for output_type 1
#
#       @-text is TEXT type and is OPTIONAL parameter
#                     this is replacement for "AT" text for output_type 2
#
#       DOT-text is TEXT type and is OPTIONAL parameter
#                     this is replacement for "DOT" text for output_type 2
#
# Author: Andrej Pirman - Pico alias Labsy
# Originally programmed for PHPBB2 as a MOD, but can be used anywhere.
# Copyright notice: You may use and modify this function as far as your
#                   imagination goes. You do not need to keep all this
#                   copyright bullshit here. :))
#                   Just, please, throw a ThankYou note on my forum at
#                   http://forum.hostmachine.net/viewtopic.php?t=60

#############################################################################

# First, we cleanup input e-mail address of forbidden characters
   $input_email = preg_replace("/[^a-zA-Z0-9.@\-_]/", "", $input_email);
   
# Then, we encode e-mail address into CHR ASCII values
      $trans_array = array();
      for ($i=45; $i<123; $i++) $trans_array[chr($i)] = "&#" . $i . ";";
      $email_encoded = strtr($input_email, $trans_array);

# Here we check if e-mail text is passed as an optional parameter   
   if($input_email_text!="") $email_text = $input_email_text;
   else $email_text = $email_encoded;
   
# Finally, we output desired e-mail format, as specified in function call
   if($type == 1)
      $output = "<script language=\"JavaScript\" type=\"text/javascript\">
      <!--
      var cc = '<a hr'; var dc = 'ef=\"';
      var fc = 'ma'; var gc = 'il';
      var hc = 'to:';   var ic = '\">';
      var jc = '</a>';
      var gobi = '".$email_encoded."';
      var gogi = '".$email_text."';
      document.write(cc+dc+fc+gc+hc);
      document.write(gobi);
      document.write(ic);
      document.write(gogi);
      document.write(jc);
      // -->\n</script>";

   else if($type == 2){
      $at = " ".$at_str." ";
      $dot = " ".$dot_str." ";
      $email_nospam = str_replace( "@", $at, $input_email);
      $email_nospam = str_replace( ".", $dot, $email_nospam);
      $output = $email_nospam;
      }

   else if($type == 3)
      $output = $email_encoded;

return $output;
}

Zadevo enostavno vključite v svojo PHP kodo, potem pa znotraj HTML ali PHP datoteke prikazujete e-maile na sledeč način:
Koda:
Znotraj HTML kode, na primer:
<?=encode_mail("vaš_email@naslov.com",1,"Ime za prikaz");?>

Znotraj PHP kode, na primer:
echo encode_mail("vaš_email@naslov.com",2,"","AFNA","PIKA");


Nazadnje urejal/a Pico 26.6.2009, 19:42; skupaj popravljeno 1 krat
Poglej uporabnikov profilPošlji zasebno sporočiloObišči avtorjevo spletno stranMSN Messenger - naslov
Gost


Odgovori s citatom
stari o čem ti to??????
Pico
Site Admin

Pridružen/-a: Ned Jan 2004 0:15
Prispevkov: 230
Kraj: HostMachine.net
Odgovori s citatom
Anonymous je napisal/a:
stari o čem ti to??????
Stari, če poskeniraš člansko stran foruma, boš za vse člane, ki imajo objavljen e-mail, lahko v izvorni kodi prebral njegov e-mail.
Torej, pošlješ robota na Google, naj išče phpBB forume in iz članskih strani pobere vse e-mail naslove. Pa si tako narediš bazo veljavnih e-mail naslovov. Za pošiljanje reklam ali kakega drugega SPAM-a. Je tko? Je! Very Happy

Ok, tale moja koda pa naredi čarovnijo, da e-mail naslov NI napisan nikjer, razen na pikah na ekranu! Ni ga v izvorni HTML kodi strani, niti se ga ne da z roboti potegnt vn.

O tem jaz to. Wink

_________________
Site admin alias Labsy
Vsi nasveti in tehnične rešitve so podani v dobri veri in za ljudi z razčiščenimi pojmi o veljavni zakonodaji.
Odgovornost prevzemam izključno in samo za tiste posege, ki jih opravim lastnoročno.
Poglej uporabnikov profilPošlji zasebno sporočiloObišči avtorjevo spletno stranMSN Messenger - naslov
Super
Inferrior


Pridružen/-a: Sob Okt 2004 10:41
Prispevkov: 18
Odgovori s citatom
Ma stari to ti je supr, ravno to sem iskal te dni Yeah, dejmo blokirat te spame kol se la da, kr sami!

Še enkrat super koda Razz.
Poglej uporabnikov profilPošlji zasebno sporočiloPošlji E-sporočiloObišči avtorjevo spletno stran
Skrivanje e-mail naslova pred SPAM roboti
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Časovni pas GMT + 1 ura, srednjeevropski - zimski čas  
Stran 1 od 1  

  
  
 Odgovori na to temo