Avatar billede tomb3 Nybegynder
12. april 2005 - 17:30 Der er 7 kommentarer og
1 løsning

Login sikkerhedshul

Har et loginscript til en side, som hiver usr/pass ud af en accessdb.
Har dog fundet ud af det er muligt at logge ind med: AA' or password <> 'a / AA' or password <> 'a (usr/pass).
Dvs. den vel hiver første usr samt pass ud af min accessdb.

Hvordan får jeg fixet problemet?

Script:

<%
SET RS = Server.CreateObject("ADODB.Connection")
rs.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("MIN_DATABASE.mdb")

If Request("mode") = "Check" then

Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  unQuote = Replace(strTekst,"%","53")
End Function

    ' Gemmer formfelterne i Variabler
        strUsername = unQuote(request("username"))
        strPassword = unQuote(request("password"))

  Sql = "Select Count(*) as Found from user where (username = '" & strUsername  & "') and (password ='" & strPassword  & "')"
  Set LO = RS.Execute(Sql)
  if LO("Found") = 0 then
    Session("login") = ""
    error = "Du blev ikke godkendt af systemet"
  else
  strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("MIN_DATABASE.mdb")
  Set myConn = Server.CreateObject("ADODB.Connection")
  myConn.Open strDSN
  strSQL = "SELECT * FROM user where (username = '" & Request("username") & "') and (password ='" & Request("password") & "')"
  Set ez = myConn.Execute(strSQL)
    Session("login") = "yes mate"
    Response.Redirect "some_ofther_site.asp"
    EZ.Close
    RS.Close
    Conn.Close
  end if
end if
%>
Avatar billede busschou Praktikant
12. april 2005 - 17:33 #1
Du skal replace ' med '' i usrname og password
Avatar billede busschou Praktikant
12. april 2005 - 17:34 #2
Function unQuote(strTekst)
  strTekst = Trim(strTekst)
  strTekst = Replace(strTekst,"'","''")
  unQuote = Replace(strTekst,"%","53")
End Function
---
sådan der.. prøv det :o)
Avatar billede thesurfer Nybegynder
12. april 2005 - 17:35 #3
erstat Request("username") med replace(Request("username"), "'", "''") .. det samme med password..
Avatar billede busschou Praktikant
12. april 2005 - 17:37 #4
som jeg ser det skal de skiftes i begge sql statements
Så ret unQoute funktionen og benyt strUsername og strPassword i begge sql
Avatar billede thesurfer Nybegynder
12. april 2005 - 17:38 #5
Jeg kan faktisk ikke helt se, hvorfor '-tegnet tillades i brugernavn/password..? :-)
man burde erstatte det med ingenting: replace(..., "'", "")

Min holdning:
- brugernavne og kodeord skal bestå af a-å og 0-9.
- ved oprettelse, skal der alle felterne checkes, hvor de alle er med småbogstaver eller alle med storebogstaver.. dvs, "peter" er det samme som "Peter", "peTer", og "peteR", idet det hele laves om til "peter"..
Avatar billede ranglen Nybegynder
12. april 2005 - 17:40 #6
thesurfer, din holding er lidt forkert. Den er rigtig mht brugernavn, men ved password skal der da være frit valgt fra alle hylder, så man kan lave så komplekse passwords som man har lyst til..
Avatar billede busschou Praktikant
12. april 2005 - 17:41 #7
Det er jo ikke et spørgsmål om hvorvidt det er tilladt at et brugernavn indeholder et pling...
Det er vel et spørgsmål om at hvis man indtaster det så fortolkes det i sql statementet
Avatar billede tomb3 Nybegynder
12. april 2005 - 17:57 #8
Det virker.. takker :)
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