Zabrana hotlinkinga

Discussion in 'Web stranice i servisi' started by SpookyMoO, Dec 24, 2014.

  1. SpookyMoO

    SpookyMoO Komšija

    Da li neko moze da mi objasni moze li se i kako sa .htaccess fajlom zabraniti tacno odredjenoj web stranici da hotlinka moje fajlove (.rar format) ili bilo koje fajlove sa mog sajta?
    Probao sam sa
    Code:
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://(.+\.)?htcmania\.com/ [NC,OR]
    RewriteCond %{HTTP_REFERER} ^http://(.+\.)?4pda\.ru/ [NC,OR]
    RewriteRule .*\.(jpe?g|gif|bmp|png|rar)$
    
    ali onda dobijam error potpune zabrane pristupa tj ne mogu ni ja da pristupim fajlovima preko browsera.
    Moze li neko sa vise znanja da mi ovo objasni?Dakle,ako se recimo radi o poddomeni (xxx.mojsajt.info) i na toj domeni se nalazi par foldera sa par fajlova i njima bi zelio zabraniti pristup tj hotlinkanje ovih fajlova sa tacno odredjenog sajta koji ih hotlinka.
    Hvala u naprijed
     
  2. selvin

    selvin Moderator

    Sto se tice dole tog RewriteRule-a, trebalo bi mozda nesto tipa:
    Code:
    RewriteRule \.(jpe?g|gif|bmp|png|rar)$ - [F]
    Crtica (-) oznacava da ne modifikujes url, a F da radis forbid.

    Ovo gore iznad mi se cini OK, i mozda dodati na kraj .*$ da match-ira sve do kraja URL-a.

    Tj. probaj ovako, sve zajedno sad:
    Code:
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://(.+\.)?htcmania\.com/.*$  [NC, OR]
    RewriteCond %{HTTP_REFERER} ^http://(.+\.)?4pda\.ru/.*$  [NC]
    RewriteRule \.(jpe?g|gif|bmp|png|rar)$ - [F]
    EDIT: Treba OR dodati na sve osim na zadnji, ako imas vise ovih conditiona.
     
  3. SpookyMoO

    SpookyMoO Komšija

    Ma nece sada brani pristup i javlja internal server error.Ima li veze gdje tacno stavim .htaccess fajl?Stavio sam ga u root poddomene!?
     
  4. selvin

    selvin Moderator

    U root i trebas, a ako ti javlja internal server error onda ili imas gresku u .htaccess fajlu ili probaj ovo dodati na pocetak:
    Options +FollowSymlinks
     
  5. SpookyMoO

    SpookyMoO Komšija

    Jbg morao izaci iz kuce probam kasnije pa javim.
     
  6. SpookyMoO

    SpookyMoO Komšija

    Nece selvine,opet javlja internal server error.Evo punog koda
    Code:
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} ^http://(.+\.)?htcmania\.com/.*$  [NC, OR]
    RewriteCond %{HTTP_REFERER} ^http://(.+\.)?4pda\.ru/.*$  [NC]
    RewriteRule \.(jpe?g|gif|bmp|png|rar)$ - [F]
    Ja mislim da nema gresaka u kodu, ali ne znam zasto error javlja
     
  7. selvin

    selvin Moderator

    Hmmm, ne vidim ni ja, ako ti je blokiralo na pocetku tako znaci da ti je mod_rewrite ukljucen (valjda?).

    Ali probaj ipak okruzit taj sav sadrzaj gore sa:
    <IfModule mod_rewrite.c>
    // taj tvoj gore code
    </IfModule>

    Je li imas puni pristup serveru ili si na nekom shared hostingu? Ako imas puni pristup provjeri onda je li ti tamo u configu ukljuceno AllowOverride All na tom virtual hostu. Mislim da se po defaultu ovo nalazi u /etc/apache2/conf/httpd.conf.

    EDIT: A evo vidim, [NC, OR] sto sam ja napisao mora biti sastavljeno, nema space-a izmedju, tj. [NC,OR]. Izvinjavam se :D Probaj prvo ovo ispravit, jer je to pogresna sintaksa, vjerovatno zbog tog dobijas 500.
     
  8. SpookyMoO

    SpookyMoO Komšija

    Na shared je hostingu,dakle nemam pristup puni.Kada nema space-a izmedju NC i OR onda radi ali opet se sa hotlinka moze skidati tj onda citav kod nema smisla nikakvog,tj ne radi.Izgleda da je ovo blokirano skroz jer sam primijetio da i ako pokusam preko cpanela da zabranim hotlinking,sta god da probam i sta god da stavim uvijek pise da je hotlinking disabled nakon spasavanja postavki.Vjerovatno ima taj override a ja ga ukloniti ne mogu!?
     
  9. selvin

    selvin Moderator

    Ej ajd probat cu ja nocas na svom serveru pa ti javim. A dotad probaj obicni redirect na index kad se bilo koji url posjeti, cisto da vidis hoce li ga bendati :D
     
  10. SpookyMoO

    SpookyMoO Komšija

    Ma radi redirect bez problema
     
  11. selvin

    selvin Moderator

    Nisam bio tu, ali evo probao sam ovo sad ovo na svom serveru i ne radi ni kod mene. A radi mi ako dozvolim samo za svoju domenu ili ako je prazan referer. Ali ovako direktno da matchiram nekoga nece.
     
  12. SpookyMoO

    SpookyMoO Komšija

    Ma ja.To je garant zabranjeno nekako.Jbg :(
    Hvala svakako
     
  13. selvin

    selvin Moderator

    Ni ja ne kontam sto ne radi, probat cu opet sta, nema mi smisla da ne radi ako okrenem uslov.

    A zasto ne bi dozvolio samo za svoju domenu? Hoces da dozvolis s drugih izvora?
     
  14. selvin

    selvin Moderator

    Evo ga druze, nastelio sam, npr. da blokiras dole navedene ekstenzije sa hardwarebase.net:
    Code:
    RewriteEngine on
    Options +FollowSymlinks
    RewriteCond %{HTTP_REFERER} ^(?:http:\/\/)?(?:.+\.)?hardwarebase\.net.*$  [NC]
    RewriteRule \.(jpe?g|gif|bmp|png|rar)$ - [F]
    Koliko sam ja skontao problem je sto ne salje svaki klijent na isti nacin referer, pa sam dodao opciju da ovaj dio http:// ne bude obavezan, kao i da kraj domene ne mora imati slash, tj. moze se zavrsavati sa bilo cime.

    Testirao sam kod sebe i radi mi, mozes provjeriti i sa ovim npr.:
    Code:
    RewriteCond %{HTTP_REFERER} hardwarebase\.net [NC] 
    Jer ti je dovoljno da napravi match, ne mora biti full string matchiran, tj. od ^ do $. Takodjer ?: gore u grupama nije obavezan samo oznacava da je grupa non-capturing, to sam dodao dok sam testirao, mislio sam da to ne pravi problem, ali nije bilo do tog.

    Tj. u tvom slucaju cijeli .htaccess treba biti nesto ovako:

    Code:
    RewriteEngine on
    Options +FollowSymlinks
    RewriteCond %{HTTP_REFERER} ^(?:http:\/\/)?(?:.+\.)?htcmania\.com.*$  [NC,OR]
    RewriteCond %{HTTP_REFERER} ^(?:http:\/\/)?(?:.+\.)?4pda\.ru.*$  [NC]
    RewriteRule \.(jpe?g|gif|bmp|png|rar)$ - [F]
    ili jednostavnije:
    Code:
    RewriteEngine On
    Options +FollowSymlinks
    RewriteCond %{HTTP_REFERER} htcmania\.com [NC,OR]
    RewriteCond %{HTTP_REFERER} 4pda\.ru [NC]
    RewriteRule \.(jpe?g|gif|bmp|png|rar)$ - [F]
    Probaj oboje pa javi.

    I koristi incognito/private browsing, jer ako imas cache-iran taj fajl/sliku nece browser ni slati novi request, a i moze imati cache-iran request pa da ne posalje ni novi header za referer-a.
     
  15. SpookyMoO

    SpookyMoO Komšija

    OK sutra nekada tj danas :D probam pa javim.Hvala puno
     
  16. SpookyMoO

    SpookyMoO Komšija

    Selvine sta bi ustvari trebalo da se desi?Probao sam oboje ali nista se ne desava.Isao sam sa dr racunara i incognito koristio,otisao na sajt gdje mi je fajl hotlinkan i opet kliknem na link ali opet vodi na fajl i skida ga,dakle opet nikakvog efekta :(
     
  17. selvin

    selvin Moderator

    Trebas dobiti 403 forbidden access. Mozes li napisati link gdje je postavljen taj link na tvoj fajl. I de probaj zabranu stavit za hwb, pa da ja probam odavdje.
     
  18. SpookyMoO

    SpookyMoO Komšija

  19. selvin

    selvin Moderator

    Eh pa ovdje nije hotlinking u pitanju, nece ono gore ni radit. Da su linkali direktan zip ne bi im dalo, mislio sam da je to u pitanju. Zabrani ti njima pristup svemu ako vec to zelis, a ne samo direktan link na te fajlove jer zapravo i ne dolaze tako. Na mob sam ali bi trebalo dole u RewriteRule .* - [F] ili tako nekako.
     
  20. SpookyMoO

    SpookyMoO Komšija

    Ja sam mislio da je i ovo hotlinking.Pa hajde kad mognes napisi na ova gore pravila kako da im skroz zabranim da ista linkaju!?
    Hvala