14. juni 2008 - 21:27Der er
6 kommentarer og 1 løsning
beskytte pdf-filer
Hej
Jeg har nogle foreningsblade liggende i pdf-format, i en selvstændig mappe. Hvordan sikre jeg mig at filerne ikke indlæses hvis man kender den fulde sti? Jeg har lavet et medlems-område, som er brugerbeskyttet med password. Det virker fint, hvor der er tale om *.asp filer
overisen >> du bliver formentlig nødt til at lægge filerne uden for roden så de ikke kan tilgåes på web - og så lave en asp-side med brugerbeskyttelsen og hvori du henter pdf'en.
On Error Resume Next ' Gå ikke ned ved fejl (f.eks. hvis filen ikke eksisterer)
DoLogin = (Request.Form("username") <> "") ' Er brugeren ved at logge ind?
If DoLogin Then ' Ja? Session("LoginUsername") = LCase(Request.Form("username")) ' Gem brugernavn Session("LoginPassword") = Request.Form("password") ' og adgangskode i session-variabler ' Reload siden: - for at undgå at man møder boksen 'Vil du sende (post)informationen igen?' Response.Redirect Request.ServerVariables("SCRIPT_NAME") & "?" & _ Request.ServerVariables("QUERY_STRING") End If
UserName = Session("brugernavn") ' Hent brugernavn Password = Session("brugerkode") ' og adgangskode i session-variabler
' Tjek brugernavn og adgangskode: (kan tjekke vilkårligt mange brugere, hvis man ønsker det) if Session("brugernavn") <> "" AND Session("brugerkode") <> "" then
Set rs = conn.Execute("select * from bruger where brugernavn = '" & Session("brugernavn") & "'")
'Tjecker om brugeren eksisterer if rs.EOF or rs.BOF then
response.write ("Du har ikke adgang til denne fil.")
else
'tjecker om passwordsne matcher hinanden
if rs("brugerkode") = Session("brugerkode") then
' Brugeren er nu logget ind!
' Evt. kan brugeren logges ud med det samme igen, vha. følgende to linier: ' I så fald får han kun lov til at downloade én fil ad gangen før login igen. ' 'Session("LoginUsername") = Empty 'Session("LoginPassword") = Empty ' ' ' *** Send fil til klienten *** ' af: Bjarke Walling Petersen <bwp@bwp.dk> '
On Error Resume Next ' Gå ikke ned ved fejl (f.eks. hvis filen ikke eksisterer)
' Find fil-stien ud fra filnavnet angivet i QueryStringen: ?file=xxxx ' Både \ og / fjernes fra filnavnet for at sikre at man ikke kan gå ind i andre mapper. ' Filerne skal selvfølgelig være placeret et sted, så webserveren ikke kan sende dem. ' Dette ville spolere hele idéen. Her er de placeret i C:\Filer\. Har man ikke egen ' server, men et webhotel, har man normalt adgang til den mappe som webmappen ligger i. ' Her kan filerne også placeres. Stien på denne mappe fås med: ' FilePath = Left(Server.MapPath("/"), InStrRev(Server.MapPath("/"), "\")) & FileName
Response.ContentType = "image/gif" ' Sæt fil-typen (MIME-Type). I dette tilfælde en Response.ContentType = "image/jpeg" ' Sæt fil-typen (MIME-Type). I dette tilfælde en Response.ContentType = "application/x-msaccess" ' Sæt fil-typen (MIME-Type). I dette tilfælde en ' .gif-fil. Se evt. artiklen 'MIME Content-types i IIS'
' Følgende sætning gør at der fremkommer en download-boks hos brugeren. Hvis man ønsker ' at det f.eks. er et billede, der vises i en HTML-fil, skal man selvfølgelig ikke gøre det. ' Det sætter også det viste filnavn til fil.gif. Prøv evt. at ændre 'attachment' til 'inline'. Response.AddHeader "content-disposition", "attachment;filename=" & FileName
Response.BinaryWrite st.Read() ' Udskriv filen til brugeren: (I første omgang bufferen)
st.Close ' Luk Stream-objektet Set st = Nothing ' Ryd op Response.End ' Afslut scriptet
else
response.write ("Du har ikke adgang til denne fil.")
end if
end if
rs.Close set rs = nothing
else response.write ("Du har ikke adgang til denne fil.") end if %> <br> <h1><%=Request.QueryString("file")%></td></tr></table> </body> </html>
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.