09. december 2002 - 23:17Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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
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
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
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!
Sorry Begin of file (Recordset) Nogle gange går det for hurtigt ;-)
Synes godt om
Ny brugerNybegynder
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.