mheddaMedlem sedan feb. 2000385 inlägg Hej!
Jag undrar hur man säkerhetskollar en bild om man har fått tillgång till hela länken till bilden, tex http://www.bild.com/bilder/bild.jpg
Som det är nu så sätter jag en session vid inloggning så att man bara skall kunna se vissa sidor när man är inloggad.
Men man kan ju se bilder vid hela sökvägg.
Så hur kan man skydda bilderna med hjälp av min session.
MVH
mheddaMedlem sedan feb. 2000385 inlägg Någon som vet??
Hoppas ni förstår mitt problem.
Finns det något enkelt sätt??
Ska man ner på servernivå?
Isåfall hur??
MVH
mheddaMedlem sedan feb. 2000385 inlägg Kan man kanske använda session för att kolla om man har behörighet till bildmappen på något sätt kanske??
Någon som vet?
Någon som är händigare på detta än vad jag är :-)
MVH
sabbacusMedlem sedan juli 2002630 inlägg Två lösningar jag kan komma på är följande:
- Lägg samtliga filer utanför dokumentroten. På så sätt kan man bara komma åt de genom att webbläsaren "hämtar" dom åt en (rätta mig om jag har fel)
- Lägg filerna i en databas. Då kan man lätt kontrollera vilka som kan komma åt filerna. Hur snällt det är att lägga filer i en databas kan jag inte svara på. Jag vet att det går (lägga som "blob"), men jag vet inte hur det blir emd prestandan.
mheddaMedlem sedan feb. 2000385 inlägg Tackar för svaret!
Om man tänker sig svar 1.
----------------------------------------------------------------------------------
- Lägg samtliga filer utanför dokumentroten. På så sätt kan man bara komma åt de genom att webbläsaren "hämtar" dom åt en (rätta mig om jag har fel)
---------------------------------------------------------------------------------
Kan man via den session jag sätter vid inloggning för att skydda sidorna,
skydda bilderna på något vis så att man inte kan se dom via tex
http://www.bild.com/bilder/bild.jpg
om man inte är inloggad?
Det där kanske var godag yxskaft från min sida:-}
Men jag frågar iallafall:-]
MVH
cefalkMedlem sedan juni 2000278 inlägg Jag har gjort så här
session_start();
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
if (!$_SESSION['forum_user_id'])
{
print "sorry!!!!";
exit;
}
$user_pic = "$spara_bilder/$picture";
$image_info = getimagesize ("$user_pic") or die ("$user_pic");
if ($image_info[2] == '2')
{
Header("Content-Type: image/jpeg");
$im = @imagecreatefromjpeg($user_pic);
ImageJPEG($im);
}
else
{
Header("Content-Type: image/gif");
$im = @imagecreatefromgif($user_pic);
ImageGIF($im);
}
och för att hämta en bild skriver jag <img src="http://www.doman.com/bild.php?picture=4">
Ovanstående hjälper ju inte om någon får reda på direktlänk till filerna av någon som är inloggad... dock borde ju sabbacus alternativ fungera.. dock så ska det vara segt att lägga in filer i db'n...
mheddaMedlem sedan feb. 2000385 inlägg Så det är inte så lätt att skydda bilder.
Finns det inget smidigt sätt att använda befintlig session till att neka åtkomsten till bildmappen om inte session finns??
Jag tror nämligen inte det går att lägga in filerna i ms-sql som jag använder.
Någon som har en smidig lösning på detta problem.
MVH
MatteMedlem sedan aug. 20002 975 inlägg Som sabbacus föreslår, lägg dina biler i en katalog utanför webbroten, eller om du inte har tillgång till det i en katalog med ett namn som är väldigt svårt att prova sig fram till.
Sedan sparar du bildnamn och mime-typ i databasen (det senare om inte alla är JPEG).
Sen bygger du upp länkar till bilderna typ
<img src="visabild.php?id=42">
I skriptet visabild.php lägger du först en inloggningskontroll och sedan kan du göra något på det här hållet
$path = 'sökväg_till_bilderna';
$sql = "SELECT bildnamn, mimetyp FROM tabell WHERE id=".intval($_GET['id']);
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_assoc($result);
header("Content-type: ".$row['mimetyp']);
header("Content-Disposition: inline; filename=".$row['bildnamn']);
$fp = fopen($path.'/'.$row['bildnamn'], "rb");
fpassthru($fp);
}
exit;
mheddaMedlem sedan feb. 2000385 inlägg Tackar för svaren jag ska testa imorgon..
MVH