Avatar billede svoeber Nybegynder
28. august 2002 - 00:34 Der er 11 kommentarer og
2 løsninger

Forhindre læsning af billed-filer fra et katalog uden om websiden

Hej eksperter.

Jeg vil høre om nogle har et forslag til, hvordan jeg løser flg. problem vha. af htaccess til Apache.

Jeg har et website med brugerprofiler, hvor der er knyttet personlige billeder til.
Man skal logge ind på siden for at kunne se brugerprofilerne.
Billederne navngiver jeg efter profilens ID, for lettere at kunne overskue dem i den mappe de ligger i.
Et billede kan derved have flg. navn og sti:
/pics/123.jpg

Kan det lade sig gøre vha. htaccess at forhindre personer, der ikke er logget ind, i at se billederne
bare ved at gætte sig frem til filnavnene og indtaste dem som en url?
Altså kun at tillade læsning af filerne, hvis de tilgås fra fx. en php-side?

Jeg kunne også delvist løse det ved at navngive filerne med en lang tilfældig streng, men jeg syntes en htaccess løsning er mere korrekt (og eksotisk :)

ps. jeg er ny på eksperten.dk og ikke helt inde i værdien af points, så hvis der skal flere til, må I lige sige det.
Avatar billede thomasledet Nybegynder
28. august 2002 - 01:40 #1
det, du ønsker kan ikke umiddelbart lade sig gøre ved hjælp af .htaccess.

en bedre metode, ville være at lade php stå for serviceringen af billedfilen (læse den raw på serveren og outputte den raw med header til klienten)... dermed kan du få dit php-script til at kontrollere, om brugeren er logget ind...

antallet af point er fint, måske en anelse højt, men det varierer fra person til person, hvor mange point, der skal til, før de er noget værd... personligt skal jeg have en milliard million point... og de er stadig intet værd for mig... kunne jeg bare få min point vekslet til 1 kroner, så var jeg en glad mand...
Avatar billede thomasledet Nybegynder
28. august 2002 - 01:42 #2
husk, at du ikke behøver at acceptere eller afvise mit svar, før du har ventet lidt og set, om der kommer et svar der er bedre... der er heller ikke noget i vejen for at dele antallet af point ud til flere forskellige svar. Husk dog at lukke spørgsmålet (acceptere et svar, eventuelt dit eget) inden alt for lang tid... (en måneds tid er længe synes jeg...)
Avatar billede svoeber Nybegynder
28. august 2002 - 01:49 #3
Hvordan skal billedfilen ligge raw? Som BLOB i databasen? (ok, nu bliver det lidt udenfor kategorien.)

Tak for info om pointfordeling.
Jeg venter lige og ser, om der skulle komme nogen forbi med flere guldkorn :)
Avatar billede hamsterdance Nybegynder
28. august 2002 - 02:45 #4
Hvis du lavet et bibliotek som er uden for webscoopet, og lægger billederne der i. Så laver du en php-fil der ser nogenlunde sådan her ud:

<?php
if($bruger_logget_ind && !ereg('[\/]', $pic))
{
  header("content-type: image/jpg");
  readfile('/sti/til/billederne/'.$pic);
}
else
{
  //Bruger har ikke logget ind, fyr en eller anden fejlmeddelse af!
}
?>

Du kalder så scriptet med
script.php?pic=123.jpg
Avatar billede benny.dk Nybegynder
28. august 2002 - 08:53 #5
thomasledet> Hvorfor mener du ikke det kan lade sig gøre med .htaccess? Hvis pic biblioteket ligger som et underbibliotek til biblioteket med .htaccess filen vil dette bibliotek kun kunne tilgås fra personer som har logget ind. Hvis de ikke er logget ind vil de få en popup og ved forkert kombination af bruger og password vil de få en not authorizied.
Avatar billede thomasledet Nybegynder
28. august 2002 - 13:34 #6
svoeber> De skal ikke ligge som BLOB i databasen... man har aldrig billeder liggende direkte i databasen - det er simpelthen for sløvt og for ressourcekrævende. De du i stedet kan gøre, er at have adressen til dine billeder til at ligge i databasen som hamsterdance også anbefaler.

benny.dk> hvad snakker du om? Den løsning du anbefaler er direkte tåbelig, taget i betragning, at jeg går ud fra, at det i forvejen er en form for php-løsning, der står for det såkaldte login af brugere. Desuden tror jeg at svoeber ønsker en service, der er lidt mere flydende og dynamisk end brug af .htaccess.

.htaccess er kun brugbar i forbindelse med fx phpMyAdmin, hvor jeg også vil mene, at den kun har begrænset brugbarhed. .htaccess er noget møg - verificering af brugere og hvad de har adgang til bør være indbygget i dit site og ikke i .htaccess.
Avatar billede thomasledet Nybegynder
28. august 2002 - 13:38 #7
.htaccess kna til nød bruges, hvis det drejer sig om nogle filer, som det kun er nogle enkelte kammerater, man ønsker at give adgang til fx en bunke billeder. Men sådan som jeg forstår dette her, er det er lidt større site, hvor disse billeder er en del af den daglige brug og skal tilgåes seamlessly fra andre php-filer...
Avatar billede benny.dk Nybegynder
28. august 2002 - 13:46 #8
Det er da ikke tåbelig. Der står ingen steder at det er php herunder heller ikke i kategorien navn.

På en apache server er .htaccess som login en glimrende løsning.

Hvad kan du gøre mere seamlessly, flydende og dynamisk via andre ting som du ikke kan via .htaccess? Måske du ikke kender .htaccess godt nok.
Avatar billede svoeber Nybegynder
28. august 2002 - 14:05 #9
>benny.dk
Jeg bruger ikke .htaccess til brugerlogin og kan derfor heller ikke begrænse adgang til billeder på denne måde.
Jeg bruger i stedet et PHP-script baseret på sessions til at styre brugeradgangen. Det giver en del fordele fremfor htaccess, fx.:
- Jeg kan selv bestemme grænsefladen i login-boxen.
- Jeg kan tilbyde automatisk login på baggrund af cookies.
- Man kan logge ud via en knap.
- Det er en del nemmere ikke at arbejde med brugere og passwords i en htpassword fil.

Jeg ville med mit spørgsmål gerne høre, om der blandt apaches mange avancerede funktioner til htaccess var en mulighed for at sige:
"Vis kun billed-filer fra denne mappe, hvis det er en webside på denne server, der viser billedet"
Avatar billede benny.dk Nybegynder
28. august 2002 - 14:20 #10
Jeg har ikke selv eksperimenteret med det, men har ladet mig fortælle at det er muligt på et bibliotek at alve en allow hvor man benytter sig af refere variablen og den skal jo så være ens eget site.

Men ved ikke hvordan det skal sættes op, desværre, men hvis jeg løber ind i ham som fortalte mig at han eksperimenterede med det, skal jeg nok spørge
Avatar billede svoeber Nybegynder
28. august 2002 - 15:39 #11
Jeg har nu selv snuset lidt til en metode med referer variablen, men her mødte jeg to problemstillinger.
1) Variablen skulle vist kunne forfalskes, hvis man ved hvordan (jeg gør ikke :)
2) Nogle brugere bag en proxy-server vil ikke sætte en korrekt referer-variabel, og vil derfor ikke se noget, selv om de burde have lov.

Jeg tror jeg vil hælde mod at gøre det med Hamsterdance/Thomasledet's metode, selvom det alligevel ikke er i htaccess.
Avatar billede thomasledet Nybegynder
28. august 2002 - 17:31 #12
referer-variablen kan uhyre let forfalskes... læs lidt om http-protokollen på http://www.w3c.org og du vil erfare, at enhver faktisk kan gøre det med et så simpelt program som telnet.

benny.dk> jeg kender htaccess ganske godt... og især godtnok til at kende dens svagheder og mangler... jeg vil mene at htacces (som svoeber også har konkluderet) ikke er det rette værktøj til denne situation.
Avatar billede svoeber Nybegynder
28. august 2002 - 17:42 #13
Jeg leger videre med PHP-løsningen og takker for svaret fra Hamsterdance og Thomasledet
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