Jag bygger ett litet community där folk kan ladda upp bilder och filer som sedan skyddas med önskad behörighetsnivå. Man kan alltså bestämma vem/vilka som ska kunna se bilden eller ladda hem filen. Jag vill ha hög säkerhet på det hela. En oinloggad obehörig person ska alltså inte kunna kika på en skyddad bild t.ex. genom att manuellt skriva in adressen https://www.mitt-community.se/uploads/bilder/125321.jpg. Alla uploads sparas med ett id-nr och dess behörighetsnivå i databasen.
Hur löser jag detta på bästa sätt? Jag ser två alternativ:
Du måste använda dig av 2 för att få den behörighetskontroll du vill. Annars kan ju den som vill sprida adressen. (Ingen gissning nödävändigt.)
Eftersom du måste göra ett databasanrop för att kolla behörigheten så blir det lite långsammare än att bara anropa en bildfil i en katalog. Men nödvändigt som sagt.
Vet inte om det låter sig göras i PHP, men i ASP.NET är det mer eller mindre inbyggt och du kan kontrollera åtkomst och behörigheter relativt enkelt i web.config och/eller med kod, och fortfarande få alltihopa serverat direkt ifrån IIS med allt vad pipes och cache heter.
Behörigheter och liknande kan du med fördel cacha i t.ex. sessionstaten, krypterat i en cookie etc. för att minimera antalet databasanrop.
Tack för era svar! Jo, det lutar mot alt. 2. Att sedan snygga till URLen på det sätt du, nitro, beskriver låter ju najs! Är det så Facebook gjort måntro, för där tycks ju alla bilder (även de man uppfattar som skyddade) serveras utan något php-script..? För visst måste de kolla behörighet? Annars är ju deras "Dela-endast-med"-funktion ganska menlös...
Nej, Facebook kontrollerar inte behörighet!! Jag provade ladda upp en bild till min profil och valde "Dela med: Anpassade - Bara mig" kollade sedan källkoden och kopierade bildens url https://fbcdn-sphotos-a.akamaihd.net..._3320958_n.jpg (nu borttagen) och klistrade in i en annan webbläsare där jag aldrig varit inloggad Facebook. Vips, bilden syns där med... Hmm, hur har de tänkt där...
webbo: På den skalan som FB arbetar skulle det bli ganska resurskrävande att ha "riktigt" skydd. Man använder akamai, ett CDN, eller content dellivery network. Man laddar upp filer och de kan nås snabbt på en angiven adress, men i gengäld får man ingen finkornig kontroll över filrättigheterna.
är det så dem ska köpa den och sedan få access till den, så är det säkraste sättet lägga filerna utan för root mapen så dem inte kan komma åt den via http eller likande, och vid ett köp så flyttar du filen till en viss ställe på http skapa en url för ner laddning efter han har laddad ner den klickad på länken så tar du bort filen från http stället och vid nästa köp så flyttar du den igen.
Nja, säkraste är det inte, säkraste är att antingen lagra dem utanför rooten, och sedan streama dem via ett script som kontrollerar rättigheterna, alternativt lägga dem åtkomliga, men styra åtkomsten programmatiskt i webbservern. Att göra som du föreslår är ganska knöligt - hur vet man när filen är nerladdad? Hur stoppar man att flera laddar ner samma fil?
140 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17