Avatar billede jeep Nybegynder
24. januar 2004 - 22:12 Der er 34 kommentarer og
2 løsninger

Login beskyttelses af filer f.eks. .doc .pdf

Jeg har et site hvor det kun er brugere der er oprettet der må hente bestemte filer. Jeg har ingen problemer med almindelige aspsider hvor jeg bare sætter ”<!--#include virtual="login.asp"-->” ind og så har brugerne adgang. Men det kan man jo ikke sætte ind en fil eller en mappe. Sitet køre på en Microsoft-IIS/5.0 server med en Accessdatabase

Er der noget der kan hjælpe?
Avatar billede websam Nybegynder
24. januar 2004 - 22:28 #1
Så vidt jeg ved er det ikke muligt dine ligger som links på en asp side hvor dine medlemmer logger ind og det er også fint nok men hvis nogen finder på at linke til dine filer kan alle få fat i dem :o( Men hvis der er en der har en løsning der virker er jeg med på en lytter :o)

/Websam
Avatar billede thesurfer Nybegynder
24. januar 2004 - 22:29 #2
Når folk vil downloade filerne, skjuler du deres sti ved at udskrive filerne direkte til browseren. På den måde downloade filerne direkte, uden at afsløre hvor de ligger.

Her er et link: http://www.psacake.com/web/if.asp

Her er noget kode:

downloadfil.asp?file=q1c.dwg



<%
if instr(request.servervariables("HTTP_USER_AGENT"),"MSIE")>0 then
  Response.ContentType = "application/x-download"
else
  Response.ContentType = "application/octet-stream"
end if
response.addheader "Content-disposition", "inline; filename=" & request.querystring(("File"))   
grabfile = server.mappath(".") & "\" & request.querystring(("File"))
Set oFM = CreateObject("SoftArtisans.FileManager")
Set oBS = oFM.OpenBinaryFile( grabfile )
Response.BinaryWrite( oBS.ReadAll )
%>
Avatar billede eagleeye Praktikant
24. januar 2004 - 22:35 #3
Det man typisk gør at at ligge filerne i en folder som ikke kan se af browseren, men af den ASP kode som køre. Så kan man nemlig ikke linke direkte til filerne med det HTML link. Så laver man en fil som thesurfer har vist og et kalder den eksvis download.asp  og så man man give et filnavn til den download.asp?fil=aaa.pdf

download.asp filen kan du så beskytte med:
<!--#include virtual="login.asp"-->”
Avatar billede websam Nybegynder
24. januar 2004 - 22:43 #4
Det er korekt men det forhindre da ikke folk der er medlemmer i ikke at hotlinke til filen med :

http://www.domain.dk/download.asp?fil=aaa.pdf

Eller hvad ?

/Websam
Avatar billede eagleeye Praktikant
24. januar 2004 - 22:46 #5
Som jeg skrev tilsidst (måske ikke specielt tydeligt) så kan download.asp filen beskyttes lige som alle andre filer der kræver login.
Avatar billede eagleeye Praktikant
24. januar 2004 - 22:47 #6
:)
Avatar billede thesurfer Nybegynder
24. januar 2004 - 23:11 #7
Hvis man ville gøre det endnu mere sikkert, kan du med HTTP_REFERER lave endnu en sikret..

f.eks:

<% if Request.ServerVariables("HTTP_REFERER") <> "gotodownload.asp" then response.redirect "login.asp" %>

Hvis man ikke kommer fra en side der hedder "gotodownload.asp", sendes man til "login.asp"..
Avatar billede jeep Nybegynder
24. januar 2004 - 23:13 #8
Hvordan skjuler jeg så en mappe så browseren ikke kan den? og vil Google ikke finde filerne med et link til den mappe de ligger og køre uden om "downloadfil.asp?file=q1c.dwg"

Jeep
Avatar billede eagleeye Praktikant
24. januar 2004 - 23:22 #9
Man ligger filerne i en folder som ligger før wwwroot eller samme med wwwroot:

c:\inetpub\filer
c:\inetpub\wwwroot

Så er det kun ASP koden på den sever som kan finde filerne. Google kan ikke finde dem.
Der er også flere web-hoteler med respect for deres brugere som har en folder sat op på den måde til database filer og andre filer man ikke bare lige må få fingre i.
Avatar billede jeep Nybegynder
24. januar 2004 - 23:28 #10
Ok sådan en mappe har jeg og vil lige teste. Hvor skal stien til mappen stå i koden? Her (("File")) eller hvad. Hvordan er det, kan man dele point?
Avatar billede eagleeye Praktikant
24. januar 2004 - 23:34 #11
I den kode som thesurfer har vist et det i denne linje

grabfile = server.mappath(".") & "\" & request.querystring(("File"))

Og du skal så srkive den fysiskesti til file:

grabfile = "c:\inetpub\filer\" & request.querystring(("File")


Ja du kan dele point, på flere måder, hvis vi begger svare kan du markere begge væres svar og acceptere dem. Eller trykke advanceret og skrive et point tal til hver.
Avatar billede jeep Nybegynder
24. januar 2004 - 23:34 #12
Skal downloadfil.asp ligge i samme mappe som filerne?
Jeep
Avatar billede eagleeye Praktikant
24. januar 2004 - 23:39 #13
Nej den skal ligge et sted hvor browseren kan se filen så man kan linke til den.
Har du SoftArtisans FileManager?
Avatar billede jeep Nybegynder
24. januar 2004 - 23:42 #14
Hvad er SoftArtisans FileManager? Jeg bruger bare WS_ftp
Avatar billede eagleeye Praktikant
24. januar 2004 - 23:45 #15
Så skal du bruge koden i fra linket: http://www.psacake.com/web/if.asp
Avatar billede eagleeye Praktikant
24. januar 2004 - 23:48 #16
Sådan her Men PDF tilføjet:

<%
'--------------------------------------------
Response.Buffer = True
Dim strFilePath, strFileSize, strFileName

Const adTypeBinary = 1

strFilePath = "C:\inetpub\filer\" & Request.QueryString("fil")

Response.Clear

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeBinary
objStream.LoadFromFile strFilePath

strFileType = lcase(Right(strFileName, 4))

' Feel Free to Add Your Own Content-Types Here
Select Case strFileType
Case ".pdf"
ContentType = "application/pdf"
Case ".asf"
ContentType = "video/x-ms-asf"
Case ".avi"
ContentType = "video/avi"
Case ".doc"
ContentType = "application/msword"
Case ".zip"
ContentType = "application/zip"
Case ".xls"
ContentType = "application/vnd.ms-excel"
Case ".gif"
ContentType = "image/gif"
Case ".jpg", "jpeg"
ContentType = "image/jpeg"
Case ".wav"
ContentType = "audio/wav"
Case ".mp3"
ContentType = "audio/mpeg3"
Case ".mpg", "mpeg"
ContentType = "video/mpeg"
Case ".rtf"
ContentType = "application/rtf"
Case ".htm", "html"
ContentType = "text/html"
Case ".asp"
ContentType = "text/asp"
Case Else
'Handle All Other Files
ContentType = "application/octet-stream"
End Select


Response.AddHeader "Content-Disposition", "attachment; filename= strFileName
Response.AddHeader "Content-Length", strFileSize
' In a Perfect World, Your Client would also have UTF-8 as the default
' In Their Browser
Response.Charset = "UTF-8"
Response.ContentType = ContentType

Response.BinaryWrite objStream.Read
Response.Flush

objStream.Close
Set objStream = Nothing
%>
Avatar billede jeep Nybegynder
24. januar 2004 - 23:56 #17
Ok hvis nu min skjulte mappe hedder scripts/opgaver/folder.pdf hvordan skal linket så skrives <a href="scripts/opgaver/folder.doc">Folder</a>
Jeg er ik så hurtig
Avatar billede eagleeye Praktikant
24. januar 2004 - 23:59 #18
Linket til download.asp filen?
det skal se sådan her ud afhængigt af hvor du har lagt download.asp filen:

<a href="download.asp?folder.asp">Folder</a>



Eller stien i download.asp filen?
strFilePath = "C:\inetpub\scripts\opgaver\" & Request.QueryString("fil")
Avatar billede thesurfer Nybegynder
25. januar 2004 - 00:01 #19
Du kunne putte download.asp filen i /download mappen. Så tror folk at dine filer ligger i /download mappen.
Dit link kunne så være <a href="/download.asp?fil=folder.pdf">download folder.pdf</a>

Dit script der ligger i /download/download.asp læser "C:\inetpub\filer\" & Request.QueryString("fil"), som så er:
"C:\inetpub\scripts\opgaver\folder.pdf"
Avatar billede thesurfer Nybegynder
25. januar 2004 - 00:07 #20
rettelse:  læser "C:\inetpub\scripts\opgaver\"

by the way: <a href="download.asp?fil=folder.pdf">Folder</a>  (manglede "fil=")
..og har ændret folder.asp til folder.pdf..
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:13 #21
ups jeg er kommet til at zappe en linje, så ret:

strFilePath = "C:\inetpub\filer\" & Request.QueryString("fil")

Response.Clear


Til dette:

strFilePath = "C:\inetpub\filer\"
strFileName = Request.QueryString("fil")

Response.Clear
Avatar billede jeep Nybegynder
25. januar 2004 - 00:17 #22
Først kunne den ikke vise siden så spytter den dette ud

Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/opgaver.asp, line 56

Response.AddHeader "Content-Disposition", "attachment; filename= strFileName
----------------------------------------------------------------------------^
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:18 #23
Prøv at rette den til dette der manger " &

Response.AddHeader "Content-Disposition", "attachment; filename=" & strFileName
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:19 #24
Og denne linje:

objStream.LoadFromFile strFilePath

Skal være:

objStream.LoadFromFile strFilePath & strFileName
Avatar billede jeep Nybegynder
25. januar 2004 - 00:22 #25
Så kommer dette

ADODB.Stream error '800a0bba'

File could not be opened.

/opgaver.asp, line 16

Ps. linje 16 er objStream.LoadFromFile strFilePath
Avatar billede eagleeye Praktikant
25. januar 2004 - 00:24 #26
som vist i kommentar 25/01-2004 00:19:59 der er et par små fejl i den kode fra linket :)
Avatar billede jeep Nybegynder
25. januar 2004 - 00:27 #27
Det så ellers ud til at være tæt på målet
Avatar billede jeep Nybegynder
25. januar 2004 - 10:28 #28
Nu fik jeg det fixet, det var bare strengen til filen der var forkert
Avatar billede jeep Nybegynder
25. januar 2004 - 10:31 #29
Hvordan får du point?????????
Avatar billede eagleeye Praktikant
25. januar 2004 - 12:22 #30
Ok :)

Så skal jeg lige ligge et svar ;)
Avatar billede jeep Nybegynder
25. januar 2004 - 12:33 #31
Hvad sker der her?
Avatar billede jeep Nybegynder
25. januar 2004 - 12:34 #32
Når jeg trykker på Accepter sker der intet
Avatar billede eagleeye Praktikant
25. januar 2004 - 12:35 #33
hmm underlidt. Skal kan prøve igen.
Avatar billede eagleeye Praktikant
25. januar 2004 - 12:40 #34
Du har valgt mit navn listen inden du trykke accepter, også selvom der kun står et navn?
Avatar billede jeep Nybegynder
25. januar 2004 - 12:44 #35
Ok så skulle den være der og så får du lige noget karma
Avatar billede jeep Nybegynder
25. januar 2004 - 12:44 #36
Og mange tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester