AddThis Social Bookmark Button

joi, septembrie 27, 2007

Blocare referer pentru impiedicarea furtului de bandwidth - rescriere din .htaccess

Am vorbit recent despre licentele Creative Commons, care permit libera distributie pe net, dar care, in functie de licenta specifica, impun si citeva restrictii, cum ar fi mentionarea autorului original sau pastrarea unei licente libere. Acum voi trece la pasul urmator: ce se poate face daca cineva incalca chiar si generozitatea licentelor Creative Commons, ba chiar mai mult, fura bandwidth folosind hotlinking.

Definitii

  • Hotlink este plasarea unui obiect, de cele mai multe ori o imagine, apartinind unui site intr-o pagina web a altui site. Se spune ca al doilea site are un hotlink catre primul site
  • Furt the bandwidth (Bandwidth theft) este folosirea unui hotlink cu care autorul site-ului original nu este de acord si se numeste furt deoarece consuma o resursa platita (bandwidth al serverului original) fara a da inapoi ceea ce se cere.
Ce este de facut in asemenea situatii? Se contacteaza "hotul", i se explica incalcarea licentei si se cere intrarea in normalitate. Daca acesta nu raspunde, se pot lua fie masuri legale, fie masuri tehnice. Masurile tehnice sint cele pe care le vom discuta in continuare.

In antetul (headerul) cererii HTTP pentru un obiect (in cazul nostru cel catre care se face hotlink) printre alte informatii se gaseste HTTP Referer, adresa pagini de referinta care cere incarcarea obiectului. In functie de aceasta informatie putem verifica daca este o pagina legitima si permite accesul sau daca nu si tunci imaginea este blocata. Vom merge chiar mai departe, si vor rescrie adresa, pentru a servi "hotului" o imagine jignitoare, care sa il dea de gol. O asemenea imagine trebuie sa aiba o dimensiune de fisier cit mai mica, cum ar fi urmatoarea:
hot bandwidth

Nota: informatia oferita de HTTP Referer nu este infailibila, ea poate fi blocata sau falsificata de catre utilizatori, dar este cea mai buna informatie pe care ne putem baza.

Si pentru a face situatia si mai complicata, vom bloca numai unii refereri, pe altii ii vom permite, vom bloca doar accesul la fisiere de tip imagine iar blocarea se va face la nivel de director, deci incluzind directive intr-un fisier .htaccess.

Blacklisting

Aceasta este metoda mea preferata: public material licentiat Creative Commons Attribution Share Alike si vreau sa presupun ca utilizatorii sint de buna credinta, asa ca permit accesul tuturor, iar apoi interzic raufacatorii.

Fisierul .htaccess primeste urmatorul continut:
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(www\.)?siteblocat1\.com [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ hotbandwidth.png [L]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?siteblocat2\.com [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ hotbandwidth.png [L]
Explicatie:
  • prima linie verifica daca valoarea HTTP Referer incepe cu adresa unui domeniu (cu si fara www) blocat
  • daca da, si daca tipul de fisier este imagine, se rescrie adresa si se inlocuieste cu imaginea de refuz
  • se repeta perechile de linii pentru fiecare domeniu care abuzeaza
Whitelisting

Este o metoda mai stricta: interzice accesul tuturor si permite doar accesul daca HTTP Referer vine dintr-o lista admisa.

Iata continutul din .htaccess:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sitepermis1\.com [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?sitepermis2\.com [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|bmp|png)$ hotbandwidth.png [L]
Explicatie:
  • prima, a doua si eventual mai multe linii in continuare listeaza domeniile care sint acceptate ca referer (cu si fara www)
  • linia a treia permite accesul direct la imagine, atunci cind nu s-a trimis nici un referer, poate fi cazul in care autorul a scris direct in browser adresa imaginii
  • daca toate conditiile de mai sus sint indeplinite, avem un referer care trebuie blocat, deci daca s-a accesat un fisier imagine se rescrie adresa si se inlocuieste cu imaginea de refuz
Evident ca totusi ar fi de preferat sa nu fie nevoie sa folosim aceste masuri, dar in caz ca nevoia apare, exista mijloace de actiune.

Niciun comentariu: