/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
asp og rettigheder
Fra : Jens U. K.


Dato : 08-03-04 17:12

På et site har jeg nogle jpg-filer der ligger i en undermappe der hedder
"grafik".
Jeg vil gerne undgå at en klient via en URL kan få "direkte" adgang til
jpg-filerne.
Min plan er at I_USR-brugeren (herefter iusr) skal nægtes adgang til
undermappen og at det kun skal være muligt at hente en jpg-fil fra
undermappen vha et kald til et asp-script, der har rettigheder til at
læse fra undermappen.

Jeg lavet et script der bruger ADODB.Stream LoadFromFile til at læse en
jpg-fil ind fra disk og sende den til klienten vha Response.BinaryWrite.
Så lang tid jeg ikke har fjernet iusr læse-rettigheder fra undermappen
fungerer scriptet virker umiddelbart fint, derfor har jeg ikke vedlagt
det.

Mit problem er at så snart jeg fjerner iusr læserettigheder fra
undermappen, så fejler scriptet. Fejlen opstår pga. at scriptet når det
kaldes åbenbart kører med iusr rettigheder og ikke I_WAM... som jeg havde
håbet. Derfor kan det selvfølgelig ikke læse en fil fra undermappen.

Ved nærmere eftertanke mener jeg at I_WAM-... hænger sammen med at
script-afviklingen køres i en seperat process.

Hvordan kan jeg løse problemet. Det skal siges at jeg afprøver sitet på en
intern IIS, men det skal i produktion på en ekstern IIS, som jeg rimeligt
sikkert ikke får lov til at være så meget herre over.

Jeg mener at have læst om en lignende løsning hvor mappen blev skjult?!

/Jens Ulrik


 
 
Ukendt (08-03-2004)
Kommentar
Fra : Ukendt


Dato : 08-03-04 19:24

On Mon, 8 Mar 2004 17:11:50 +0100, "Jens U. K." <1jk2@3bsopatent4.dk>
wrote:

>Jeg mener at have læst om en lignende løsning hvor mappen blev skjult?!

har ikke checked koden endnu, men er det er nogenlunde det du søger?:

http://www.asp101.com/resources/visitors/index.asp

"Anti-Leech Download Script (2 KB) by Rudy Dullier"

Nederst på siden

MVH
J Hansen

Med venlig hilsen
Jimmy hansen

Jens U. K. (09-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 09-03-04 09:32

"J Hansen" <jimmyh hansen> wrote in message
news:8dep40ts1b1p41vvk7l5v5li3e3ttfgu0h@4ax.com...
> On Mon, 8 Mar 2004 17:11:50 +0100, "Jens U. K." <1jk2@3bsopatent4.dk>
> wrote:
>
> >Jeg mener at have læst om en lignende løsning hvor mappen blev skjult?!
>
> har ikke checked koden endnu, men er det er nogenlunde det du søger?:

Nej, desværre.

> http://www.asp101.com/resources/visitors/index.asp
>
> "Anti-Leech Download Script (2 KB) by Rudy Dullier"

Løsningen forhindrer svjks ikke at nogen gætter den "rigtige" url.
Min egen løsnings adgangsbegrænsning foregår i øvrigt på omtrent samme
måde, jeg kan da godt for sjov skyld vise koden her:

--- kode start ---
<% set stmData = Server.CreateObject("ADODB.Stream")
strFilePath = server.MapPath("/sikret mappe") & "\" &
Request.QueryString("Billedenavn") & ".jpg"
stmData.Open
stmdata.Type = 1
stmdata.LoadFromFile strFilePath
Response.ContentType = "image/jpeg"
Response.BinaryWrite stmData.Read
stmData.Close
set stmData = nothing
Response.End %>
--- kode slut ----

I ovenstående kode fremkommer en fejl hvis filen ikke eksisterer, eller
hvis scriptet ikke har læserettigheder til undermappen/filen.

Jeg leder efter en løsning hvor serverside-scriptet får ekstra rettigheder
til at læse fra en undermappe på mit site. Den samme undermappe må ikke
kunne tilgås fra en browserklient.

Nu jeg tænker over det var der vist nogen der i en anden tråd nævnte at
man kunne oprette en mappe i roden af sitet, hvor en browserklient ikke
får lov til at navigere hen til. Den samme mappe vil serverside-scriptet
få lov til at navigere hen til for der er ikke den samme begrænsning.
I_USR skal bare have rettigheder til mappen, så vil serverside-scriptet
også kunne få adgang.
Problemet er nok bare at få sin udbyder overtalt til at oprette en sådan
mappe. Problemet er nok også at der kan være andre sites
serverside-scripts der vil kunne tilgå mappen.

PS: Jeg har en nødløsning; jeg kan flytte billedfilerne ind i BLOBs i en
SQLserver og hermed kunne få adgangsbegrænsning. Men det er en nødløsning,
da ekstraindkøb af SQL-Mbyte er en hel del dyrere end den diskplads der i
forvejen er i overskud på sitet.

/Jens Ulrik


Jens U. K. (09-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 09-03-04 12:27

"Jens U. K." <1jk2@3bsopatent4.dk> wrote in message
news:oif3c.1569$fC4.924@news.get2net.dk...
> "J Hansen" <jimmyh hansen> wrote in message
> news:8dep40ts1b1p41vvk7l5v5li3e3ttfgu0h@4ax.com...
> > On Mon, 8 Mar 2004 17:11:50 +0100, "Jens U. K." <1jk2@3bsopatent4.dk>
> > wrote:
[...]
> --- kode start ---
> <% set stmData = Server.CreateObject("ADODB.Stream")
> strFilePath = server.MapPath("/sikret mappe") & "\" &
> Request.QueryString("Billedenavn") & ".jpg"
> stmData.Open
> stmdata.Type = 1
> stmdata.LoadFromFile strFilePath
> Response.ContentType = "image/jpeg"
> Response.BinaryWrite stmData.Read
> stmData.Close
> set stmData = nothing
> Response.End %>
> --- kode slut ----
>
> I ovenstående kode fremkommer en fejl hvis filen ikke eksisterer, eller
> hvis scriptet ikke har læserettigheder til undermappen/filen.
>
> Jeg leder efter en løsning hvor serverside-scriptet får ekstra
rettigheder
> til at læse fra en undermappe på mit site. Den samme undermappe må ikke
> kunne tilgås fra en browserklient.

Et alternativ, der godt nok er besværligt, men som virker er at tilføje
"<!--" i starten af alle jpg-filerne med en binær editor el. lign.
Derefter omdøbes filen til endelsen asp. Scriptet ovenover ændres til at
kigge efter asp i stedet og der indsættes en stmdata.Read(4) umiddelbart
inden stmdata.read. Hvis nogen tilgår filen via den "direkte" url, vil de
måske få en asp-fejl om at en kommentar manglede en slutkommentar, men de
vil aldrig få fat i selve filen. Jeg vil tillade mig at vise en "pænt"
redigeret version og forbeholde mig rettighederne til ideen, hvis ikke en
anden altså allerede har fundet på det

--- start kode ---
<%@ Language=VBScript %>
<% Option Explicit %>
<!-- #INCLUDE FILE="IsAuth.asp" -->
<%
REM Made by: /Jens Ulrik.
REM Please include this remark if
REM code is used in its whole or partly.
REM No support or warranty given.

dim strFilePath
dim stmData
set stmData = Server.CreateObject("ADODB.Stream")

strFilePath = server.MapPath("/SecuredFiles") & "\" & _
Replace(Request.QueryString("FileName"),"\","") & ".asp"
stmData.Open
stmdata.Type = 1 'binary
stmdata.LoadFromFile strFilePath
Response.ContentType = Request.QueryString("FileType") 'ex. "image/jpeg"
stmdata.Read(4)
Response.BinaryWrite stmData.Read
stmData.Close
set stmData = nothing
Response.End
%>
--- slut kode ---

"Isauth.asp" indeholder sædvanlig brugervalideringskode evfter eget valg.

PS: Der er ikke andre der i mellemtiden har udtænkt andre smartere
løsninger?

/Jens Ulrik


Jens U. K. (09-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 09-03-04 12:42

"Jens U. K." <1jk2@3bsopatent4.dk> wrote in message
news:oif3c.1569$fC4.924@news.get2net.dk...
> "J Hansen" <jimmyh hansen> wrote in message
> news:8dep40ts1b1p41vvk7l5v5li3e3ttfgu0h@4ax.com...
> > On Mon, 8 Mar 2004 17:11:50 +0100, "Jens U. K." <1jk2@3bsopatent4.dk>
> > wrote:
[...]
> --- kode start ---
> <% set stmData = Server.CreateObject("ADODB.Stream")
> strFilePath = server.MapPath("/sikret mappe") & "\" &
> Request.QueryString("Billedenavn") & ".jpg"
> stmData.Open
> stmdata.Type = 1
> stmdata.LoadFromFile strFilePath
> Response.ContentType = "image/jpeg"
> Response.BinaryWrite stmData.Read
> stmData.Close
> set stmData = nothing
> Response.End %>
> --- kode slut ----
>
> I ovenstående kode fremkommer en fejl hvis filen ikke eksisterer, eller
> hvis scriptet ikke har læserettigheder til undermappen/filen.
>
> Jeg leder efter en løsning hvor serverside-scriptet får ekstra
rettigheder
> til at læse fra en undermappe på mit site. Den samme undermappe må ikke
> kunne tilgås fra en browserklient.

Et alternativ, der godt nok er besværligt, men som virker er at tilføje
"<!--" i starten af alle jpg-filerne med en binær editor el. lign.
Derefter omdøbes filen til endelsen asp. Scriptet ovenover ændres til at
kigge efter asp i stedet og der indsættes en stmdata.Read(4) umiddelbart
inden stmdata.read. Hvis nogen tilgår filen via den "direkte" url, vil de
måske få en asp-fejl om at en kommentar manglede en slutkommentar, men de
vil aldrig få fat i selve filen. Jeg vil tillade mig at vise en "pænt"
redigeret version og forbeholde mig rettighederne til ideen, hvis ikke en
anden altså allerede har fundet på det Nedenstående kode virker ikke
kun for jpg.-filer! Hvis man f.eks. vil beskytte en pdf.-fil så benyttes
"application/pdf" bare som FileType. Det kræver selvfølgelig at en
pdf.-fil har fået tilføjet "<!--" i starten og at endelsen er ændret til
asp.

--- start kode ---
<%@ Language=VBScript %>
<% Option Explicit %>
<!-- #INCLUDE FILE="IsAuth.asp" -->
<%
REM Made by: /Jens Ulrik.
REM Please include this remark if
REM code is used in its whole or partly.
REM No support or warranty given.

dim strFilePath
dim stmData
set stmData = Server.CreateObject("ADODB.Stream")

strFilePath = server.MapPath("/SecuredFiles") & "\" & _
Replace(Request.QueryString("FileName"),"\","") & ".asp"
stmData.Open
stmdata.Type = 1 'binary
stmdata.LoadFromFile strFilePath
Response.ContentType = Request.QueryString("FileType") 'ex. "image/jpeg"
stmdata.Read(4)
Response.BinaryWrite stmData.Read
stmData.Close
set stmData = nothing
Response.End
%>
--- slut kode ---

"Isauth.asp" indeholder sædvanlig brugervalideringskode evfter eget valg.

PS: Der er ikke andre der i mellemtiden har udtænkt andre smartere
løsninger?

/Jens Ulrik


Jens U. K. (09-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 09-03-04 13:16


"Jens U. K." <1jk2@3bsopatent4.dk> wrote in message
news:74i3c.2379$Um7.13@news.get2net.dk...
> "Jens U. K." <1jk2@3bsopatent4.dk> wrote in message
> news:oif3c.1569$fC4.924@news.get2net.dk...
> > "J Hansen" <jimmyh hansen> wrote in message
> > news:8dep40ts1b1p41vvk7l5v5li3e3ttfgu0h@4ax.com...
> > > On Mon, 8 Mar 2004 17:11:50 +0100, "Jens U. K."
<1jk2@3bsopatent4.dk>
> > > wrote:
[...]
> Et alternativ, der godt nok er besværligt, men som virker er at tilføje
> "<!--" i starten af alle jpg-filerne med en binær editor el. lign.

Alternativt kan man tilføje "<!-- #INCLUDE FILE="ShowError.asp" -->" og så
sørge for at showerror.asp redirecter til en forklarende fejlside. Hvis
denne løsning vælges skal man selvfølgelig ændre tallet i stmdata.read(4)
til længden af det tilføjede.

/Jens Ulrik


Jesper Stocholm (09-03-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 09-03-04 16:24

"Jens U. K." <1jk2@3bsopatent4.dk> wrote in
news:aX03c.3355$LA3.2776@news.get2net.dk:

> Hvordan kan jeg løse problemet. Det skal siges at jeg afprøver sitet
> på en intern IIS, men det skal i produktion på en ekstern IIS, som jeg
> rimeligt sikkert ikke får lov til at være så meget herre over.

Du kan putte en Guid() foran alle navne på dine filer - dermed skulle det
ikke være muligt at "gætte" sig til et filnavn.

> Jeg mener at have læst om en lignende løsning hvor mappen blev
> skjult?!

Du kan lægge dine billeder udenfor 'webscope', så de ikke kan hentes via en
browser. Så længe du giver IUSR læserettigheder til mappen, så skulle det
kunne læses af dit asp-script samt sikkerheden være i orden.


--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Jens U. K. (10-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 10-03-04 09:35

"Jesper Stocholm" <j@stocholm.invalid> wrote in message
news:Xns94A7A6C1F53CFstocholmdk@130.225.247.90...
> "Jens U. K." <1jk2@3bsopatent4.dk> wrote in
> news:aX03c.3355$LA3.2776@news.get2net.dk:
>
> > Hvordan kan jeg løse problemet. Det skal siges at jeg afprøver sitet
> > på en intern IIS, men det skal i produktion på en ekstern IIS, som jeg
> > rimeligt sikkert ikke får lov til at være så meget herre over.
>
> Du kan putte en Guid() foran alle navne på dine filer - dermed skulle
det
> ikke være muligt at "gætte" sig til et filnavn.

En guid burde i praksis være umulig at gætte, så det er da en rimelig
acceptabel løsning.
Men... da der ikke er den store forskel på at lave en funktion der
tilføjer en guid til filnavnet på en fil ifm den lægges på et site, og en
funktion der tilføjer en "kommentar-include" (som jeg har skrevet om i en
anden del af tråden) i starten af filen, så vil jeg personligt vælge
"kommentar-include"-funktionen, da den svjks er 100% sikker.

>
> > Jeg mener at have læst om en lignende løsning hvor mappen blev
> > skjult?!
>
> Du kan lægge dine billeder udenfor 'webscope', så de ikke kan hentes via
en
> browser. Så længe du giver IUSR læserettigheder til mappen, så skulle
det
> kunne læses af dit asp-script samt sikkerheden være i orden.

Bedste (letteste) løsning, helt klart; desværre tror jeg ikke at alle
udbydere har den service.

/Jens Ulrik


Jesper Stocholm (10-03-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 10-03-04 14:26

"Jens U. K." <1jk2@3bsopatent4.dk> wrote in
news:4rA3c.3063$_E7.141@news.get2net.dk:

> "Jesper Stocholm" <j@stocholm.invalid> wrote in message
> news:Xns94A7A6C1F53CFstocholmdk@130.225.247.90...
>> "Jens U. K." <1jk2@3bsopatent4.dk> wrote in
>> news:aX03c.3355$LA3.2776@news.get2net.dk:
>>
>> > Hvordan kan jeg løse problemet. Det skal siges at jeg afprøver
>> > sitet på en intern IIS, men det skal i produktion på en ekstern
>> > IIS, som jeg rimeligt sikkert ikke får lov til at være så meget
>> > herre over.
>>
>> Du kan putte en Guid() foran alle navne på dine filer - dermed skulle
>> det ikke være muligt at "gætte" sig til et filnavn.
>
> En guid burde i praksis være umulig at gætte, så det er da en rimelig
> acceptabel løsning.

Ja, det mener jeg også, at den er. Hvis du sørger for at implementere
adgangsbegrænsning i din ASP-fil, så er det "rimeligt" sikker. Husk også
på, at det ikke skal være muligt at gætte adressen på stien ud af din
querystring, dvs

page.asp?image=/images/443-dsvs-wer2-das23-3jdasf-sommerferie.png

Er nok ikke en god idé.

> Men... da der ikke er den store forskel på at lave en funktion der
> tilføjer en guid til filnavnet på en fil ifm den lægges på et site, og
> en funktion der tilføjer en "kommentar-include" (som jeg har skrevet
> om i en anden del af tråden) i starten af filen, så vil jeg personligt
> vælge "kommentar-include"-funktionen, da den svjks er 100% sikker.

Det kan godt være, men principielt kan det ikke være "rigtigt", at der
skal ændres i selve fildata for at beskytte dem. Det må være selve OS'ets
opgave at beskytte, og det kan godt lade sig gøre uden videre sværdslag.

>> Du kan lægge dine billeder udenfor 'webscope', så de ikke kan hentes
>> via en browser. Så længe du giver IUSR læserettigheder til mappen, så
>> skulle det kunne læses af dit asp-script samt sikkerheden være i
>> orden.
>
> Bedste (letteste) løsning, helt klart; desværre tror jeg ikke at alle
> udbydere har den service.

Hvis min udbyder ikke tilbød dette, så ville jeg skifte hende ud. Det bør
være standard i alle webhoteller, og i øvrigt kun tage 20 sekunder at
oprette for en bruger.

--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Jens U. K. (10-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 10-03-04 15:43

"Jesper Stocholm" <j@stocholm.invalid> wrote in message
news:Xns94A892CB7C899stocholmdk@130.225.247.90...
> "Jens U. K." <1jk2@3bsopatent4.dk> wrote in
> news:4rA3c.3063$_E7.141@news.get2net.dk:
[...]
> page.asp?image=/images/443-dsvs-wer2-das23-3jdasf-sommerferie.png
>
> Er nok ikke en god idé.



>
> > Men... da der ikke er den store forskel på at lave en funktion der
> > tilføjer en guid til filnavnet på en fil ifm den lægges på et site, og
> > en funktion der tilføjer en "kommentar-include" (som jeg har skrevet
> > om i en anden del af tråden) i starten af filen, så vil jeg personligt
> > vælge "kommentar-include"-funktionen, da den svjks er 100% sikker.
>
> Det kan godt være, men principielt kan det ikke være "rigtigt", at der
> skal ændres i selve fildata for at beskytte dem. Det må være selve
OS'ets
> opgave at beskytte, og det kan godt lade sig gøre uden videre sværdslag.

Hvordan beskytter du dine asp-filer?

/Jens Ulrik


Jesper Stocholm (10-03-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 10-03-04 18:41

"Jens U. K." <1jk2@3bsopatent4.dk> wrote in news:RPF3c.4596$w%1.3340
@news.get2net.dk:

>> Det kan godt være, men principielt kan det ikke være "rigtigt", at der
>> skal ændres i selve fildata for at beskytte dem. Det må være selve
>> OS'ets
>> opgave at beskytte, og det kan godt lade sig gøre uden videre sværdslag.
>
> Hvordan beskytter du dine asp-filer?

Jeg lægger dem udenfor webscope og loader dem med et asp-script

--
Jesper Stocholm http://stocholm.dk

Programmer's code comment:
//It probably makes more sense when you're stoned.

Jens U. K. (11-03-2004)
Kommentar
Fra : Jens U. K.


Dato : 11-03-04 09:42

"Jesper Stocholm" <j@stocholm.invalid> wrote in message
news:Xns94A8BE14FE429stocholmdk@130.225.247.90...
> "Jens U. K." <1jk2@3bsopatent4.dk> wrote in news:RPF3c.4596$w%1.3340
> @news.get2net.dk:
>
> >> Det kan godt være, men principielt kan det ikke være "rigtigt", at
der
> >> skal ændres i selve fildata for at beskytte dem. Det må være selve
> >> OS'ets
> >> opgave at beskytte, og det kan godt lade sig gøre uden videre
sværdslag.
> >
> > Hvordan beskytter du dine asp-filer?
>
> Jeg lægger dem udenfor webscope og loader dem med et asp-script

I det du har muligheden for at gøre det er det, som jeg skrev tidligere,
klart den bedste løsning.

Hvis ikke man har mulighed for ude-af-webscope-oplevelsen er man nødt til
at ændre fildata for at beskytte dem. Svjv er en af de gængse måder at
"beskytte" et html-dokument på, ved at omdøbe det til et asp-dokument og
ligge adgangsbegrænsning i toppen, alternativt at lægge en include-sætning
i toppen til et dokument der udfører "beskyttelsen". Imho ikke de store
sværdslag i det, og heller ikke i at udføre den samme operation for en
binær fil.

Principielt ville jeg klart foretrække at serverside-scripts blev udført
via sin egen brugerkonto og ikke IUSR. Hvis man i IIS site-opsætningen
vælger at køre serverside-scripts som seperate processer bliver de vist
også udført med IWAM kontoen, men igen er jeg ikke sikker på at man bare
kan få sin udbyder til at sætte det op...

/Jens Ulrik


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste