FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Jag skulle vilja neka tillträde för direkt åtkomst av alla filer i en viss katalog på min webbserver (IIS).
Alltså, t.ex ska man inte kunna skriva: http://någonsite.se/bilder/test.jpg Men, jag vill kunna ladda bilderna från sidor som ligger på siten. D.v.s. i en html fil <img src=... >. Har gogglat en massa, och provat alla möjliga lösningar men får resultatet att antingen kommer man inte åt filerna alls, eller så har man full åtkomst till alla filer. Några förslag? Kanske inte går? |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Det går om du använder serverskript (asp/php), eftersom de då inkluderas via filsystemet och inte IIS. Därmed går de förbi eventuella åtkomstbegränsningar i IIS.
Det är dock bökigt och inget jag rekommenderar. |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
Detta är mycket enkelt att göra. istället för att länka bilden direkt gör du te x
[img]LoadImage.aspx?ImageID=135[/img] Så i filen LoadImage.aspx laddar du bilden från filsystemet. På detta sätt kan du till och med ha bilden utan för WWWROOT och då kan absolut ingen gå direkt på filen. På många Windows servrar ligger ibland en hyfsat bra komponent (Persits AspJpeg) som du kan använda om du vill göra det riktigt enkelt för dig. /M |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Då flyttar du ju bara problemet. Istället för att skriva http://någonsite.se/bilder/test.jpg för att komma åt bilden direkt så skriver du http://någonsite.se/LoadImage.aspx?ImageID=135
För att det inte ska gå att komma åt bilden direkt måste du lägga in en kontroll som kan fastställa att img-taggen ligger på rätt sida. Det är däri det bökiga ligger. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Men jag kan väl lika gärna berätta hur man gör...
På html-sidan så skapar du ett slumptal för varje bild. Slumptalet sparas på servern, exempelvis i en databas. Därefter anger du slumptalet på bild-länken, exempelvis http://någonsite.se/LoadImage.aspx?I...umptal=4927581 I LoadImage.aspx som plockar fram bilderna så kontrolleras om slumptalet finns sparat. Finns det på servern så visas bilden och slumptalet tas bort. |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Nykomling
|
Citat:
Har varit inne på denna lösningen, men problemet jag då fick är att firefox inte visar bilderna. Fungerar bra i explorer. Några förslag på hur man får det att fungera även i Firefox? |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Om det inte fungerar är det förmodligen något som är fel. Internet Explorer sväljer tyvärr alldeles för många felaktigheter, så det är ingen bra webbläsare att testa i. Jag skulle gissa på att du inte har satt rätt mimetyp, dvs inte talat om vad det är för sorts fil som kommer. "Content-Type: image/jpeg".
Har du någon länk till en sida där du har lagt upp bilderna på detta vis så kan jag kolla vad det är för fel. |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Nykomling
|
Nä, kör allt lokalt för tillfället. Hur förbereder jag rätt mimetyp?
|
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
Du måste skriva "Content-Type: image/jpeg" på headern. Antar att du använder asp och vet inte hur man gör där. Jag har något svagt minne av Response.ContentType = "image/jpeg" men är inte säker.
|
||
![]() |
![]() |
![]() |
#10 | |||
|
||||
Klarade millennium-buggen
|
Page.Response.ContentType = "image/jpeg" även i .Net, men det går väl att använda Page.Response.AppendHeader(name as string, value as string) om du vill bygga din egen header.
Föresten, du nämnde aspx så då antar jag att du kör .net eller? Då kan du väl lägga en web.config fil i valfri map om du vill specialsätta regler för just den mappen. Kolla upp om det går med just säkerhet. Tänk på att alla förfrågningar till filer paserar inte .net "motorn" utan skickas av IIS'en på sidan om. Detta borde göra så att du kan ha olika rättigheter för filerna (dvs anonymous) och sedan låta din aspx-kod impersonate ett annat konto med andra rättigheter...? jaja, bara lite idéer som dök upp. |
|||
![]() |
![]() |
Svara |
|
|