Avatar billede babyworm Nybegynder
04. marts 2004 - 13:29 Der er 34 kommentarer og
3 løsninger

Login sikkerhed

Hejsa..

Jeg har lavet et login, men jeg ved ikke om det er sikkert nok:

min default.asp:

<!-- #include file="conn.asp" -->
<%
openConn()
strSQL = "Select login.user,login.pass,login.id from login"
Set rs = connection.Execute(strSQL)

Do
Error = ""
If Request("Submit")<>"" Then

    If Request("user") = "" & rs("user") & "" and _       
        Request("pass")="" & rs("pass") & "" Then
        Session("Valid") = Request("user")
        Response.redirect "succes.asp"
        response.flush
   
    Else       
        Error = "Forkert brugernavn eller password. Prøv igen!"   
    End If
End If
rs.MoveNext
Loop While Not rs.EOF
%>


<html>
<head>
<title>Login</title>
</head>
<body>

<form action="default.asp" method="post">
<table>
<tr>
  <td>Brugernavn:</td>
  <td><Input type="text" name="user"></td>
</tr>
<tr>
  <td >Password:</td>
  <td><input type="password" name="pass"></td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" name="submit" value="Login"></td>
</tr>
<% If Error <> "" Then %>
<tr>
  <td colspan="2"><%= Error %></td>
</tr>
<%End If%>
</table>
</form>
<%
closeConn()
%>

</body>
</html>

_____________________________________________

min succes.asp

<%
If Session("Valid") = "" Then
  Response.Redirect "default.asp"
End If
%>

<%
Response.write "Hej "& Session("Valid") &", Du er nu logget korrekt ind!"
%>

Er der en der gider sige mig hvis der er nogle huller der burde lukkes???
Avatar billede websam Nybegynder
04. marts 2004 - 13:32 #1
Jeg vil anbefale dig at tage et kig på dette :

http://activedeveloper.dk/artikler/default.asp?articleid=88

Den beskriver et godt sikkert login system :o)

/Websam
Avatar billede babyworm Nybegynder
04. marts 2004 - 13:35 #2
Var jo ikke det jeg ville have :) Ville have jeg fik gjort den jeg har lavet der, sikker :)
Avatar billede fennec Nybegynder
04. marts 2004 - 13:40 #3
du kan ikke gøre det meget sikre med programmering. Det kan fejle hvis en hacker kan få lagt en side op, hvor han sætter Session("Valid") = "et eller andet", eller få adgang til databasen.

Begge tilfælde skal forhindres andet sted...
Avatar billede ellebaek Nybegynder
04. marts 2004 - 13:40 #4
det er som sådant rimelig sikkert...

Dog er det ikke sikkert hvis en bruger har været logget ind, og derefter trykker logud.
Hvis man så benytter tilbage, så vil det stadig være som om brugeren er logget ind, indtil han opdatere siden.
Avatar billede babyworm Nybegynder
04. marts 2004 - 13:42 #5
Men et nybegynder login er det vel ok????
Avatar billede websam Nybegynder
04. marts 2004 - 13:42 #6
Ok men den er ikke ret svær at skrive om til din database og så er du langt mere sikker i din login, men det var også kun et forslag :o)

/Websam
Avatar billede babyworm Nybegynder
04. marts 2004 - 13:44 #7
Ja.. Men du ved... Når man nu lige er startet med at lære asp, så kan det hele virke meget overvældende :)
Avatar billede ellebaek Nybegynder
04. marts 2004 - 13:45 #8
Websam -> Langt mere sikker vil jeg ikke betegne det som... 

strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

Dog er det vigtigt at du har disse linier med i din loginchek, for hvis du ikke har det, kan man tvinge systemet til at lave en fejl, og hvis dette sker, kan man få forskellige informationer ud af fejlen.
Avatar billede ellebaek Nybegynder
04. marts 2004 - 13:45 #9
så skal du tilpasse denne linie også:

If strUID = "" & rs("user") & "" and _       
  strPWD ="" & rs("pass") & "" Then
Avatar billede babyworm Nybegynder
04. marts 2004 - 13:46 #10
Men hvor skal jeg ligge den ind i mit loginscript???
Avatar billede fennec Nybegynder
04. marts 2004 - 13:48 #11
jeg ville også ændre dette, så du ikke får alle brugere i din select...

If Request("Submit")<>"" Then
    strSQL = "Select login.user,login.pass,login.id from login where user="&request("user")&" and pass="&request("pass")
    Set rs = connection.Execute(strSQL)
    if not rs.eof then
        Session("Valid") = Request("user")
        Response.redirect "succes.asp"
        response.flush
    Else       
        Error = "Forkert brugernavn eller password. Prøv igen!"   
    End If
End If
Avatar billede ellebaek Nybegynder
04. marts 2004 - 13:48 #12
<!-- #include file="conn.asp" -->
<%
openConn()
strSQL = "Select login.user,login.pass from login"
Set rs = connection.Execute(strSQL)

Do
Error = ""
If Request("Submit")<>"" Then

strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

  If strUID = "" & rs("user") & "" and _       
      strPWD ="" & rs("pass") & "" Then
        Session("Valid") = Request("user")
        Response.redirect "succes.asp"
        response.flush
   
    Else       
        Error = "Forkert brugernavn eller password. Prøv igen!"   
    End If
End If
rs.MoveNext
Loop While Not rs.EOF
%>

Sådan her.
Avatar billede ellebaek Nybegynder
04. marts 2004 - 13:50 #13
ja helt sikkert fennec...

Så slipper du for at læse alle informationerne ind hver gang..
så kommer det til at se ud som:

If Request("Submit")<>"" Then
strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    strSQL = "Select login.user,login.pass,login.id from login where user='"&strUID&"' and pass='"&strPWD& "'"
    Set rs = connection.Execute(strSQL)
    if not rs.eof then
        Session("Valid") = Request("user")
        Response.redirect "succes.asp"
        response.flush
    Else       
        Error = "Forkert brugernavn eller password. Prøv igen!"   
    End If
End If
Avatar billede babyworm Nybegynder
04. marts 2004 - 13:52 #14
Så min kode kommre til at se sådan ud:

<%
openConn()
strSQL = "Select login.user,login.pass from login"
Set rs = connection.Execute(strSQL)

Do
Error = ""
If Request("Submit")<>"" Then
strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    strSQL = "Select login.user,login.pass,login.id from login where user='"&strUID&"' and pass='"&strPWD& "'"
    Set rs = connection.Execute(strSQL)
    if not rs.eof then
        Session("Valid") = Request("user")
        Response.redirect "succes.asp"
        response.flush
    Else       
        Error = "Forkert brugernavn eller password. Prøv igen!"   
    End If
End If
rs.MoveNext
Loop While Not rs.EOF
%>
Avatar billede fennec Nybegynder
04. marts 2004 - 13:55 #15
kun dette
<%
openConn()

If Request("Submit")<>"" Then
strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

    strSQL = "Select login.user,login.pass,login.id from login where user='"&strUID&"' and pass='"&strPWD& "'"
    Set rs = connection.Execute(strSQL)
    if not rs.eof then
        Session("Valid") = Request("user")
        Response.redirect "succes.asp"
        response.flush
    Else       
        Error = "Forkert brugernavn eller password. Prøv igen!"   
    End If
End If
%>
Avatar billede babyworm Nybegynder
04. marts 2004 - 13:57 #16
Den vil ikke logge ind nu... nu siger den at brugernavn og adgangskode er forkerte
Avatar billede fennec Nybegynder
04. marts 2004 - 14:00 #17
er det edt rigtige felt du requester???

Request.Form("Brugernavn") ->Request.Form("user")
Request.Form("Adgangskode") ->Request.Form("pass")
Avatar billede babyworm Nybegynder
04. marts 2004 - 14:02 #18
DOOOH.... tak :)

Fennec hvis du også gider ligge et svar???
Avatar billede fennec Nybegynder
04. marts 2004 - 14:03 #19
jeg smider et her...
Avatar billede babyworm Nybegynder
04. marts 2004 - 14:04 #20
Tak for hjælpen :)
Avatar billede ellebaek Nybegynder
04. marts 2004 - 14:06 #21
Takker for points..
..Ellebæk!
Avatar billede fennec Nybegynder
04. marts 2004 - 14:09 #22
jeg takker da også....

>>Ellebæk
tak for trim/replace. Det havde jeg ikke tænkt på, så det skal jeg lige have indsat et par steder :)
Avatar billede ellebaek Nybegynder
04. marts 2004 - 14:11 #23
c",)
Avatar billede the_bma_man Nybegynder
05. marts 2004 - 00:41 #24
Den sikkerhed er om muligt endnu mere elendig, end din oprindelige.
Post mig en URL til logon siden, og jeg skal logge på.
Avatar billede babyworm Nybegynder
05. marts 2004 - 11:16 #25
Jeg bruger et andet login nu... :)

Fik en ven til at kode en ny version... :)

<!-- #include file="conn.asp" -->
<%
If Request.Form("Action") = "Login" Then

    strUID = Trim(Replace(Request.Form("Username"),"'",""))
    strPWD = Trim(Replace(Request.Form("Password"),"'",""))

    If Len(strUID) > 0 And Len(strPWD) > 0 Then

        openConn()

        strSQL = "SELECT UserID FROM Users"&_
            " WHERE (Username = '" & strUID & "')"&_
            " AND (Password = '" & strPWD & "')"

        Set rs = connection.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
           
            intUID = rs("UserID")
        Else
            strERR = "Du blev ikke godkendt af systemet"
        End If

        closeConn()

        If Len(intUID) Then
            Session("UserID") = intUID
            Response.Redirect("beskyttet.asp")
        End If
    Else
        strErr = "Du skal skrive både brugernavn og adgangskode"
    End If

    If Len(strErr) > 0 Then
        strErr = "<font color=red>" & strErr & "</font>"
    End If
End If
%>
<html>
<head>
<title>Login script</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<form method="POST" action="login.asp">
  <h1>Angiv brugernavn og adgangskode</h2>
  <table border="0">
    <tr>
      <td width="75">Brugernavn:</td>
      <td><input type="text" name="Username" size="20" class="input"></td>
    </tr>
    <tr>
      <td width="75">Adgangskode:</td>
      <td><input type="password" name="Password" size="20" class="input"></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><input type="submit" value="Login" name="Action" class="knap"></td>
    </tr>
  </table>
  <p><%=strErr%></p>
</form>
</body>
</html>
Avatar billede the_bma_man Nybegynder
05. marts 2004 - 13:46 #26
Og jeg gentager - smid mig et link til siden, og jeg skal logge på!!
Avatar billede websam Nybegynder
05. marts 2004 - 19:24 #27
the bma man>> Har du nogen ideer til hvad der er galt med scriptet hvis du mener du kan logge på siden ?!?

/websam
Avatar billede the_bma_man Nybegynder
05. marts 2004 - 23:20 #28
jep - men jeg vil gerne lige checke, at jeg har ret, inden jeg kommer med den "videnskabelige" forklaring.

babyworm> Har du en URL?
Avatar billede babyworm Nybegynder
06. marts 2004 - 09:26 #29
Avatar billede websam Nybegynder
07. marts 2004 - 20:17 #30
Ok jeg venter spændt :o) Det er jo rart at se hvis det er dig muligt for vil jeg da ikke linke til artiklen fremover indtil evt. bugs er rettet i den :o)

/Websam
Avatar billede the_bma_man Nybegynder
08. marts 2004 - 09:31 #31
Har du nogen brugere i din database?
Hvis ikke - så opret lige en.
Hvis du har - så må jeg bøje mig. Så kan jeg ikke umiddelbart komme på.
Avatar billede the_bma_man Nybegynder
08. marts 2004 - 09:32 #32
Men - må jeg så spørge:
Er det _præcis_ den kode, du har postet 05/03-2004 11:16:30, som kører på siden?
Avatar billede babyworm Nybegynder
08. marts 2004 - 09:33 #33
Jepper....
Avatar billede the_bma_man Nybegynder
08. marts 2004 - 09:38 #34
Og der er brugere i databasen?
Avatar billede babyworm Nybegynder
08. marts 2004 - 09:42 #35
Ja
Avatar billede babyworm Nybegynder
08. marts 2004 - 09:56 #36
Fik en mail om du havde skrevet, men kan ikke se du har skrevet noget siden jeg skrev 08/03-2004 09:42:19
Avatar billede the_bma_man Nybegynder
08. marts 2004 - 15:02 #37
Det har jeg ikke - men som sagt 08/03-2004 09:31:12, så giver jeg mig. Den er ok.
(Utroligt hvad et par paranteser i en where clause kan udrette :-))
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