Avatar billede ezrider Nybegynder
28. september 2004 - 19:29 Der er 20 kommentarer og
2 løsninger

Adgangskontrol vha. .htaccess

Kan man med .htaccess styre, at en web-applikation kan have adgang til filer (billeder) i en mappe, mens brugerne ikke har?

Forklaret på en anden måde:
Brugerne må se billederne via hjemmesiden , men de må ikke hente dem direkte fra mappen.
Avatar billede medions Nybegynder
28. september 2004 - 19:33 #1
Se:
http://networking.ringofsaturn.com/Web/htaccess.php

Der er præcis det du mangler...

//>Rune
Avatar billede ezrider Nybegynder
28. september 2004 - 19:41 #2
Jeg vil gerne undgå basic auth - er det muligt?
Avatar billede medions Nybegynder
28. september 2004 - 19:43 #3
Nej, det vil jeg ikke mene det er :(

//>Rune
Avatar billede Slettet bruger
28. september 2004 - 20:01 #4
Det kan gøres med mod_rewrite. Se http://www.albionresearch.com/disaster/sex_sells.php

Disse linier i din .htaccess burde klare det:

RewriteCond %{HTTP_REFERER} !^$                                 
RewriteCond %{HTTP_REFERER} !^https?://www.example.com/.*$ [NC]
RewriteRule .*\.(gif|jpg)$        -                            [F]
Avatar billede ezrider Nybegynder
28. september 2004 - 20:20 #5
sandbox >> smed linierne i min .htaccess, men billerne kan stadig nås med den direkte sti.
Avatar billede Slettet bruger
28. september 2004 - 20:26 #6
Så fjern den første af de 3 linier. Så risikerer du bare, at brugere, der af en eller anden grund ikke sender referer-information ikke kan komme til at se billederne.
Avatar billede ezrider Nybegynder
28. september 2004 - 20:32 #7
Det hjælper vel ikke noget. Så længe mit domæne indgår i URL'en (www.example.com/images/001.jpg) vil billedet kunne tilgås, da requesten ikke bryder nogen regler.
Avatar billede ezrider Nybegynder
28. september 2004 - 20:33 #8
Har selvfølgelig prøvet dit forslag..
Avatar billede Slettet bruger
28. september 2004 - 20:49 #9
Linien RewriteCond %{HTTP_REFERER} !^https?://www.example.com/.*$ [NC] ser ikke efter om den er en del af den nuværende adresse, men om den er en del af den henvisende sides adresse.

Måske skal du have denne med også:

RewriteEngine on

Og måske skal du lige se efter, om der i httpd.conf er noget, der forhindrer at du i det hele taget bruger RewriteEngine fra en .htaccess
Avatar billede ezrider Nybegynder
28. september 2004 - 21:19 #10
Det fjernede adgangen til billederne - dog også fra hjemmesiden, hvilket jo ikke er meningen.
Avatar billede Slettet bruger
28. september 2004 - 21:25 #11
Og du har rettet så der står dit eget domæne i stedet for www.example.com ?
Avatar billede ezrider Nybegynder
28. september 2004 - 21:31 #12
Yeps - her er min .htaccess (xxxxx dækker selvf. for mit eget domæne)

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^https?://www.xxxxx.dk/.*$ [NC]
RewriteRule .*\.(gif|jpg)$        -                    [F]
Avatar billede Slettet bruger
28. september 2004 - 21:38 #13
Forresten: Der er forskel på www.xxxxx.dk og xxxxx.dk

Det nuværende regelsæt kræver at der er brugt www.xxxxx.dk, men hvis du ønsker at begge skal være muligt, skal det bare rettes til: (www.)?xxxxx.dk
Avatar billede ezrider Nybegynder
28. september 2004 - 21:47 #14
Det er nu heller ikke det, der er problemet :(
Avatar billede htm Nybegynder
29. september 2004 - 14:32 #15
Prøv og sæt RewriteLog op, med loglevel på 9 så kan du se hvad der sker helt præcist :)
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteLog

RewriteLog "/usr/local/var/apache/logs/rewrite.log"
RewriteLogLevel 9

Det skal placeres i Virtual Hosts eller ServerConfig.
Avatar billede ezrider Nybegynder
29. september 2004 - 14:43 #16
Jeg host'er desværre ikke selv - jeg har kun adgang til web-kataloget :(
Avatar billede htm Nybegynder
29. september 2004 - 20:26 #17
Ja det er ærgeligt, så mister man den unikke testmulighed.

men eks. skulle virke fint, har det også selv kørende.

Men man skal være opmærksom på at det ikke er en god måde at hindre deeplinkning:

- Det er nemt at forfalske sin HTTP_REFERER
- Der er nogle proxyservere og firewalls som fjerner denne HTTP_REFERER, så man dermed opnår at de ikke kan se billedet fordi de får forbidden. (hellere ikke via din egen side)

Men man skal lige spørge sig selv og tænke godt over det. Hvorfor vil jeg ikke have folk deeplinker til mine billeder? De kan downloade dem alligevel... Hvad er formålet ? og kan man styre det på anden måde.

Men hvordan tester du ? Hvad er det problemet er helt præcist?
Avatar billede ezrider Nybegynder
29. september 2004 - 20:36 #18
Problemstilling:
Private billeder i en mappe må kun vises til folk, der er logget ind. Billederne hentes frem vha. html/php. Login styrer jeg vha. php og ønsker ikke at anvende basic auth. Billederne må ikke kunne tilgås af folk, der ikke er logget ind - det kan de nu, hvis de kender den direkte sti.

Jeg håbede på, at man kunne begrænse adgangen vha. regler i .htaccess, således at billederne kun blev vist, hvis det var web-applikationen, der hentede dem frem. Når jeg anvender .htacces fjernes adgangen til billederne - men også fra web-applikationen, hvilket jo ikke er meningen.
Avatar billede htm Nybegynder
29. september 2004 - 21:29 #19
Det nemmeste og mest sikre vil være at at bruge apaches password beskyttelse.

Du kan også lave en løsning med at du placerer billeder uden for webroot. eks hvis dine filer ligger i www/public_html så kan du ligge dine billeder i www/images

så kan du så hente dem via php:
<?php
header("Content-type: image/gif");
echo file_get_contents("/fulde/sti/til/din/folder/images/billede.gif");
?>

Det er selvfølgelig et enkelt eks. med gif. Men det er en mulighed. så kan du tjekke om man er logget ind via php - og kune vise billedet hvis man er eller vise et no access billede hvis man ikke er.

Så er det helt umuligt at få fat i dine billeder uden for dit eget interface.

Du kan kombinere det på forskellige måder i php - meget komplekse urls. eller lign.

Men der findes ikke nogen apache måde du kan gøre det effektivt uden password beskyttelse.
Avatar billede ezrider Nybegynder
30. september 2004 - 17:03 #20
Jeg kan ikke tilgå nogen mappe uden for web-roden. Dog har jeg brugt lidt af dit forslag, htm, til at løse problemet.

Jeg har lagt en .htacces fil i mappen med billeder, hvori der kun er adgang via. basic auth. Jeg henter så billederne ind i min web-applikation vha. php - lidt i stil med det du viser. Inden da checker jeg dog om personen der vil tilgå billedet er logget ind.

Hvis du smider et svar htm, så kan dig og sandbox dele pointene.
Avatar billede htm Nybegynder
30. september 2004 - 20:57 #21
ok :) - det er da også en udemærket ide :)
Avatar billede Slettet bruger
30. september 2004 - 21:30 #22
Det er jo også smart, for så har du jo selv mulighed for at se billederne uden om dit PHP-baserede system.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester