Avatar billede jriff Nybegynder
09. december 2002 - 23:17 Der er 8 kommentarer og
2 løsninger

Validering af password (2)

Hej Alle!

Jeg validerer et password fra en database med følgende stump kode:

set rs=db.execute("select * from brugere where Login='" & request.form("Username") & "'")

if rs.eof then response.redirect("failedlogin.asp?err=unknownuser")

if rs.fields("Password").value=request.form("Pwd") then
    session("LoggedIn")=True
    session("Username")=request.form("Username")
    session("Userlevel")=rs.fields("BrugerLevel").value
    response.redirect("index.asp")
else
    response.redirect("failedlogin.asp?username=" & request.form("username") & "&err=badpwd")
end if

Er jeg sikret mod den der 1=1 snydemetode, og kan I se andre måder at hacke koden på? Altså: Kan det hele gøres mere sikkert end jeg har gjort?

MVH

Jacob Riff
Avatar billede medions Nybegynder
09. december 2002 - 23:20 #1
set rs=db.execute("select * from brugere where Login='" & Trim(Replace(request.form("Username"),"'","''")) & "'")

if rs.eof then response.redirect("failedlogin.asp?err=unknownuser")

if rs.fields("Password").value=request.form("Pwd") then
    session("LoggedIn")=True
    session("Username")=request.form("Username")
    session("Userlevel")=rs.fields("BrugerLevel").value
    response.redirect("index.asp")
else
    response.redirect("failedlogin.asp?username=" & request.form("username") & "&err=badpwd")
end if

Nu er du ;o)

//>Rune
Avatar billede blazer Nybegynder
09. december 2002 - 23:21 #2
Hmmm...kan hackes hvis:

request.form("Username") ="a' or login='a"

det giver sqlen
Avatar billede medions Nybegynder
09. december 2002 - 23:23 #3
Hejhej Jonas! *G*

Blazer> Nej, ik' hvis du Replacer ' med 2 ''!

//>Rune
Avatar billede thb Nybegynder
09. december 2002 - 23:23 #4
Jeg synes ikke at der er grund til at fortælle brugeren, hvad han har gjort forkert... "err=unknownuser" & "err=badpwd", for så bliver det vel en smule lettere (i princippet) :)

Hvad mener du med "1=1 snydemetode"

Hvorfor ikke bare skrive

SQL = "select * from brugere where login='" & request.form("username") & "' and password='" & request.form("pwd") & "'"

if rs.bof or rs.eof then
response.redirect "failedlogin.asp"
else
session("LoggedIn") = True
end if

Thomas
Avatar billede blazer Nybegynder
09. december 2002 - 23:25 #5
fuck..den fuckede min besked op...for at opsummere....
brug

set rs=db.execute("select * from brugere where Login='" & (Replace(request.form("Username"),"'","''") & "'")

men uanset hvad kan det max bruges til noget hvis man ikke kender brugernavnet på den første den returnerer i recordsettet hvis du indskyder en or operator i sqlen, men man kender passwordet..så den er sikker nok
Avatar billede jriff Nybegynder
09. december 2002 - 23:28 #6
Medions>

Jeg kan slet ikke se hvad din nye db.execute gør... Det er kun denne linie du har ændret?

set rs=db.execute("select * from brugere where Login='" & Trim(Replace(request.form("Username"),"'","''")) & "'")

Du erstatter en enkelt ' med to af slagsen? Hvorfor hjælper det? (Jeg kan godt se at det virker, og tak for det... jeg vil bare gerne forstå det :-)
Avatar billede jriff Nybegynder
09. december 2002 - 23:34 #7
THB>

Hvad betyder rs.BOF?
Avatar billede medions Nybegynder
10. december 2002 - 00:06 #8
jriff>
Access vil ikke tillade en enkelt ', så derfor erstatter man den altid med 2 ''er! -Resultatet vil blive det samme i  det du fx udskriver din tekst fra DB'en!

BOF betyder Begin Of File.

//>Rune
Avatar billede draken Nybegynder
10. december 2002 - 00:07 #9
For at forstå 1=1 - problemet se
Sikkerhed ved udvikling af sider med databaseadgang på
http://activedeveloper.dk/aspdigital/2002053001.asp

rs.BOF = Bottom of File (Recordset)
Avatar billede draken Nybegynder
10. december 2002 - 00:08 #10
Sorry Begin of file (Recordset)
Nogle gange går det for hurtigt ;-)
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