webForumDet fria alternativet

Dölja sökväg till bilder?

PHP

8 svar · 806 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Vilket är det mest "optimala" sättet för att dölja/maskera direkta sökvägar till bilder?
(Gäller både interna och externa bilder.)

Skulle även behöva ha en cache-funktion.

Medlem sedan juni 20034 013 inlägg
#2

Genom att lägga dem i en katalog utanför det som går att nå via webbservern. Då finns det ingen direkt sökväg via webben. I stället måste man gå via ett phpskript och då kan du ju villkora användningen. Exempelvis kan du ha engångslänkar eller länkar som bara funkar en viss tid.

För engångslänkar kan du ju använda en databas. När någon begär en sida där du ska visa bilden så genererar du ett slumptal och lägger in i databasen tillsammans med vilken bild som ska visas. Slumptalet lägger du i bildlänken, typ: visabild.php?slumptal=n

Visabild.php kollar i databasen om slumptalet finns och tar i så fall fram vilken bild som ska visas, hämtar bilden och skriver ut den (echo(file_get_contents($bild))) och plockar bort slumptalet ur databasen så det inte går att använda igen. Observera att du också måste sätta content-type: header("Content-type: image/jpeg");

Att göra länkar som bara funkar en viss tid, kanske en minut, är enklare för datorn och behöver ingen databas. Du lägger då bara in klockslag i länken och signerar det så det inte går att ändra. Enklaste sättet är så här:

$expire = date("YmdHis", time() + 60);
$key = mt_rand();
$secret = "OPFGnh54nvd#/(vv/@BBx4";
$hash = md5($expire . $key . $secret);

visabild.php?expire=$expire&key=$key&hash=$hash

Notera att vi skickar med allt utom $secret (som du får ändra till något eget slumpat).

visabild.php tar och räknar fram:
$checkhash = md5($_GET['expire'] . $_GET['key'] . $secret);

och kollar att den stämmer med $_GET['hash']. Stämmer den så vet den att användaren inte har ändrat $expire och den kollar då att $expire inte har gått ut, och tar fram och visar bilden om allt är okej.

Medlem sedan juli 20041 271 inlägg
#3

Kör redan med ett liknande script, dock utan "engångslänk".
Det verkar gå rätt segt att visa externa bilder genom php/gd. :(

Medlem sedan juni 20034 013 inlägg
#4

Guldstrand skrev:

Det verkar gå rätt segt att visa externa bilder genom php/gd. :(

GD behöver du bara använda om du ska bearbeta bilderna, annars kan du ta dem direkt genom php som jag skrev.

Medlem sedan juli 20041 271 inlägg
#5

tydal skrev:

GD behöver du bara använda om du ska bearbeta bilderna, annars kan du ta dem direkt genom php som jag skrev.

Ja, jag vet det.
Står dock still gällande hur jag går vidare.

Medlem sedan juni 20034 013 inlägg
#6

Då får du nog berätta lite mer vad du vill uppnå. Varför vill du inte visa var bilden finns?

Medlem sedan juli 20041 271 inlägg
#7

tydal skrev:

Då får du nog berätta lite mer vad du vill uppnå. Varför vill du inte visa var bilden finns?

Behöver man ha en förklaring till det? :l

Medlem sedan aug. 20039 340 inlägg
#8

Vad exakt vill du göra? Du kan ju göra så att bara de som är inloggade och auktoriserade kommer åt bilden. Detta gör på liknande sätt som du normalt kollar om någon är inloggad. Om du inte har någon inloggning kan du kanske skapa engångslänkar som dessutom är knutna till den IP-adress användaren kommer. Om du bara vill hindra folk från att "hotlinka" bilder för att spara bandbredd så bör du kika på en .htaccess-baserad lösning.

Medlem sedan nov. 20051 596 inlägg
#9

Verkar som dina frågor om bilder både här och på andra ställen är på väg att bli rena rama gissningsleken så då kommer jag med min lilla gissning.

Ditt script i din tråd 'Hämta bilder från extern hemsida' fungerar inte på en sida där bilderna är bakgrunder i css och/eller sparade som BLOB.
Men självklart kan folk forfarande stjäla bilderna, när de besöker sidan ...

Jag utgår från att det inte är du som ska hotlinka andra sidor och vill dölja sökvägen, eller...?

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)