WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Filåtkomst i IIS (https://www.wn.se/forum/showthread.php?t=8490)

Fluffe 2005-06-15 11:41

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?

tydal 2005-06-15 12:18

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.

Micke_N 2005-06-15 13:34

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

tydal 2005-06-15 13:44

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.

tydal 2005-06-15 13:54

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.

Fluffe 2005-06-15 14:13

Citat:

Originally posted by tydal@Jun 15 2005, 13:54
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.

Antar att du menar, som de tidigare inläggen, att LoadImage.aspx plockar fram bilden genom att länka direkt i filsystemet? (eller vad man nu ska kalla det) Ex:d:\home\testsite\bilder\bild10.jpg.

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?

tydal 2005-06-15 14:17

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.

Fluffe 2005-06-15 14:27

Nä, kör allt lokalt för tillfället. Hur förbereder jag rätt mimetyp?

tydal 2005-06-15 14:28

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.

Robert 2005-06-15 17:03

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.


Alla tider är GMT +2. Klockan är nu 13:51.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson