Avatar billede overisen Novice
14. juni 2008 - 21:27 Der 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

venlig hilsen

Overisen
Avatar billede keysersoze Guru
14. juni 2008 - 23:13 #2
darrich >> hvordan er det lige at den kan hjælpe?

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.
Avatar billede overisen Novice
14. juni 2008 - 23:40 #3
kan du give et bud på hvordan asp-siden skal laves?
Avatar billede klinemann Nybegynder
16. juni 2008 - 20:34 #4
<html>
<%
'Åbner connection til databasen
'-----------------------------------------------------------------------------------
Set conn = Server.CreateObject("ADODB.connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb")

'Setup
'-----------------------------------------------------------------------------------
Set setup = Server.CreateObject("ADODB.RecordSet")
strSQL = "select * from tabel where cellle"
setup.Open strSQL, conn, 1, 3
%>
<head>
    <title>Download Center</title>
</head>

<body>
<table width="100%" height="100%"><tr><td align="center">
<%

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
                       
                        FileName = Replace(Replace(Request.QueryString("file"), "/", ""), "\", "")
                        FilePath = "D:\Domains\wwwroot\" & FileName
                       
                       
                        Response.Buffer = True ' Vent med at sende output til scriptet er færdigt
                       
                        Set st = Server.CreateObject("ADODB.Stream") ' Åben Stream-objektet
                       
                        st.Type = 1 ' Sæt fil-typen til binær
                        st.Open ' Åben objektet
                        st.LoadFromFile FilePath ' Åben fil angivet i QyeryStringen: ?file=xxxx
                       
                        Response.Clear ' Rens output-bufferen
                       
                        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>
Avatar billede klinemann Nybegynder
16. juni 2008 - 20:39 #5
Avatar billede overisen Novice
16. juni 2008 - 21:43 #6
klinemann, du skal lige sende et "svar", så jeg kan give dig point
Avatar billede klinemann Nybegynder
17. juni 2008 - 22:49 #7
svar :-)
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