Avatar billede tj_cuper Nybegynder
02. maj 2006 - 15:40 Der er 16 kommentarer og
1 løsning

Bedste login script med bedste sikkerhed

Hej jeg ville høre om nogle af jer har nogle gode login script som er 100 % sikkerhed på. Gerne script som i selv bruger på jeres hjemmesider så i ved om de virker 100 % optimalt.

Er ved at lave en clanside og er derfor meget vigtig at min bruger er 100% sikkere på at ikke blive hacket og fået slettet noget.

Håber på i har nogle scripts har prøvet en del og de fleste er noget være pis.

Så smid mig nogle scripts evt. link til sider med 100 % sikkere login scripts. (skal være 3 adgange)

En til admin, en til normal user, og en til vise admin. Login scripte skal kunne køre sammen med database, så alle der opretter sig som bruger kommer ind i en access database..

på forhånd tak.
Avatar billede fennec Nybegynder
02. maj 2006 - 15:55 #1
På nettet er der ikke noget der er 100% sikkert :o)
For det første kan loginoplysningerne fra formfelterne læses når de bliver sendt, medmindre du har et SSL sertifikat.

Dernæst kan session variablerne hackes ved at gætte sig til et aktivt session ID. Hvilket dog er usansynlig, men ikke umuligt.

Disse problemer er normalt noget man bare acceptere, så sålænge du har beskyttet din database mod download (ligger i en skjult mappe) og injections (hele ' problematikken), er dit system sikker.
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 15:57 #2
hmm okay har du et godt login script??

ps. hvad er injections?
Avatar billede fennec Nybegynder
02. maj 2006 - 15:58 #3
Et simpelt login tjek:

user = replace(request.form("userField"),"'","''")
pass = replace(request.form("passField"),"'","''")
set rs = conn.execute("select * from userTable where uName='"& user &"' and pWord='"& pass &"'")
if not rs.eof then
  'Login OK
  session("userID") = rs("id")
  ..
else
  'Login fejl
  response.write "Forkert login"
end if
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 16:01 #4
ja de der simple login er jeg ved at være træt af har et. men det fungere ikke rigtig for hvis man logger sig ind som normal bruger også skriver i adresse listen navnet på admin border går den lige der ind unden at kræve admin login / password.

Så har du ikke det godt et mere avanceret med login side + check så den køre en del i gennem inden man har adgang.
Avatar billede fennec Nybegynder
02. maj 2006 - 16:03 #5
Injections er ' problematikken. Forstil dig f.eks at jeg brugte dette login:

user: (ingen indtastning)
pass: ' or 1=1 (læg mærke til ' tegnet)

Hvis jeg ikke havde replace koden ville SQL-sætningen blive til:
select * from userTable where uName='' and pWord='' or 1=1

Denne sql vil returnere alle rækker i userTable og derved logge mig ind som den første i rækken.
Avatar billede fennec Nybegynder
02. maj 2006 - 16:06 #6
Du skal selvfølgelig have et admin tjek på admin-siderne. Du kunne evt sætte det som en session i loginscriptet:

'Login OK
  session("userID") = rs("id")
  if rs("admin") = 1 then
    session("isAdmin") = true
  else
    session("isAdmin") = false
  end if

På dine admin sider tjekker du så for det:
if not session("isAdmin") then
  response.write "Du er ikke admin"
  response.end
end if
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 16:07 #7
oki takker prøver jeg lige 2 sec :D
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 16:10 #8
her er min login script hvor skal den lige side henne :) ?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<link href="../Layout/design.css" rel="stylesheet" type="text/css">
</head>
<%
    If Request.QueryString("action") = "login" Then
   
                strUID = Trim(Replace(Request.Form("Brugernavn"),"'","''"))
                strPWD = Trim(Replace(Request.Form("Adgangskode"),"'","''"))
               
                If (Len(strUID) > 0) And (Len(strPWD) > 0) Then
                               
                    Set rs = Server.CreateObject("ADODB.Recordset")
                    rs.Open "SELECT * FROM protect WHERE (Username = '" & strUID & "') AND (Password = '" & strPWD & "')", database
                   
                            If (Not rs.BOF) And (Not rs.EOF) Then
                           
                                        intUID = rs("id")
                                        intTRAN = rs("transfer")
                                       
                            Else
                                strERR = "Access Denied"
                            End If
                           
                            If Len(intUID) > 0 Then
                           
                                        Session("id") = intUID
                                        response.write session("id")
                                        Response.Redirect intTRAN
                            End If
                           
                            Else
                                strErr = "Access Denied"
                            End If
                           
                            If Len(strErr) > 0 Then
                                            strErr = "<p><font color=""red"">" & strErr & "</font></p>"
                            End If
                    End If
                %>
               
<!-------------------------------------------------------- Login formularen ------------------------------------------------------------>
    <form method="post" action="default.asp?action=login">
        <table class="Text" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td colspan="2" class="Overskrift">Login ::</td>
            </tr>
            <tr>
                <td>
            <a href="reg.asp"><img style="margin-top:2px;" src="../layout/register.gif" border="0"></a>
                </td>
                <td>
                <a href="#"><img style="margin-top:2px;" src="../layout/password.gif" border="0"></a>   
                </td>
            </tr>
            <tr>
                <td width="50%">ID:</td>
                <td width="50%"><input class="logFelt" type="text" name="Brugernavn"></td>
            </tr>
            <tr>
                <td width="50%">Pass:</td>
                <td width="50%"><input class="logFelt" type="password" name="Adgangskode"></td>
            </tr>
            <tr>
                <td colspan="2" align="right"><input class="logGo" type="submit" value="Login" name="Action"></td>
            </tr>
            <tr>
                <td colspan="2">
                <%=strErr%>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
Avatar billede fennec Nybegynder
02. maj 2006 - 16:22 #9
If (Not rs.BOF) And (Not rs.EOF) Then
  intUID = rs("id")
  intTRAN = rs("transfer")
Else
  strERR = "Access Denied"
End If

If Len(intUID) > 0 Then
  Session("id") = intUID
  response.write session("id")
  Response.Redirect intTRAN
End If

kan du forkorte til:
If Not rs.EOF Then
  intTRAN = rs("transfer")
  Session("id") = rs("id")
  if rs("admin") = 1 then
    session("isAdmin") = true
  else
    session("isAdmin") = false
  end if
  Response.Redirect intTRAN
Else
  strERR = "Access Denied"
End If

Nu ved jeg ikke hvordan du angiver om man er admin, men håber du kan forstå princippet :o)
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 16:27 #10
Det virker ikke rigtig den siger fejl. kan du ikke prøve at sætte det ind i en ikke forkortet udgave :)?
Avatar billede fennec Nybegynder
02. maj 2006 - 16:39 #11
<%
If Request.QueryString("action") = "login" Then
    strUID = Trim(Replace(Request.Form("Brugernavn"),"'","''"))
    strPWD = Trim(Replace(Request.Form("Adgangskode"),"'","''"))
    If (Len(strUID) > 0) And (Len(strPWD) > 0) Then
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open "SELECT * FROM protect WHERE (Username = '" & strUID & "') AND (Password = '" & strPWD & "')", database
        If Not rs.EOF Then
            Session("id") = rs("id")
            if rs("admin") = 1 then
                session("isAdmin") = true
            else
                session("isAdmin") = false
            end if
            Response.Redirect rs("transfer")
        Else
          strERR = "Access Denied"
        End If
    end if
    If Len(strErr) > 0 Then
        strErr = "<p><font color=""red"">" & strErr & "</font></p>"
    End If
End If
%>

Men som sagt ved jeg ikke hvordan du angiver om en bruger er administrator eller ej, hvorfor jeg har gættet på at der er en "admin" kolonne i tabellen. Er der det?? Eller hvordan angiver du administrator??
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 16:43 #12
hmm nu virker login ikke med de andre bruger...

Ja jeg har en kolonne der hedder "demo1"

Den jeg bruger som admin lige nu..
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 16:45 #13
Hvis du har msn. kan jeg prøve at sende dig scriptet... så kan du kigge der?
Avatar billede Slettet bruger
02. maj 2006 - 17:14 #14
- jeg vil også anbefale dig at hashe dit password og username, for eksempel med md5 eller lignende...

\Dan
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 17:16 #15
oki jeg forstår ikke rigtig noget af det :) ikke haft asp så længe. Ingen af jer der har et færdigt script som er i top ved sikkerhed angår?
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 17:30 #16
Hej kan jeg ikke få dig til at sætte det her script ind i min login scrip, for ved ikke helt selv hvor den skal sidde. ::

'Login OK
  session("userID") = rs("id")
  if rs("admin") = 1 then
    session("isAdmin") = true
  else
    session("isAdmin") = false
  end if

login script ::

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<link href="../Layout/design.css" rel="stylesheet" type="text/css">
</head>
<%
    If Request.QueryString("action") = "login" Then
   
                strUID = Trim(Replace(Request.Form("Brugernavn"),"'","''"))
                strPWD = Trim(Replace(Request.Form("Adgangskode"),"'","''"))
               
                If (Len(strUID) > 0) And (Len(strPWD) > 0) Then
                               
                    Set rs = Server.CreateObject("ADODB.Recordset")
                    rs.Open "SELECT * FROM protect WHERE (Username = '" & strUID & "') AND (Password = '" & strPWD & "')", database
                   
                            If (Not rs.BOF) And (Not rs.EOF) Then
                           
                                        intUID = rs("id")
                                        intTRAN = rs("transfer")
                                       
                            Else
                                strERR = "Access Denied"
                            End If
                           
                            If Len(intUID) > 0 Then
                           
                                        Session("id") = intUID
                                        response.write session("id")
                                        Response.Redirect intTRAN
                            End If
                           
                            Else
                                strErr = "Access Denied"
                            End If
                           
                            If Len(strErr) > 0 Then
                                            strErr = "<p><font color=""red"">" & strErr & "</font></p>"
                            End If
                    End If
                %>
               
<!-------------------------------------------------------- Login formularen ------------------------------------------------------------>
    <form method="post" action="default.asp?action=login">
        <table class="Text" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td colspan="2" class="Overskrift">Login ::</td>
            </tr>
            <tr>
                <td>
            <a href="reg.asp"><img style="margin-top:2px;" src="../layout/register.gif" border="0"></a>
                </td>
                <td>
                <a href="#"><img style="margin-top:2px;" src="../layout/password.gif" border="0"></a>   
                </td>
            </tr>
            <tr>
                <td width="50%">ID:</td>
                <td width="50%"><input class="logFelt" type="text" name="Brugernavn"></td>
            </tr>
            <tr>
                <td width="50%">Pass:</td>
                <td width="50%"><input class="logFelt" type="password" name="Adgangskode"></td>
            </tr>
            <tr>
                <td colspan="2" align="right"><input class="logGo" type="submit" value="Login" name="Action"></td>
            </tr>
            <tr>
                <td colspan="2">
                <%=strErr%>
                </td>
            </tr>
        </table>
    </form>
</body>
</html>
Avatar billede tj_cuper Nybegynder
02. maj 2006 - 19:57 #17
lukket
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