Har ett loginscript som ursprungligen kommer från IDG. Men mitt problem är att ifall jag loggar in med and och password från två olika rader i databasen. så komer jag in på andvändaren som lösenordet tillhör.. om någon fattar skulle jag gjärna vilja ha något råd på hur det inte blir så :P
Visa = "SELECT * FROM medlem ORDER BY ID"
RecSet.Open Visa, Connect, 3, 3
X = FALSE
Do Until X = TRUE OR RecSet.EOF
If RecSet("Email") = Request.Form("Email") Then
X = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
If X = TRUE Then
Y = FALSE
Do Until Y = TRUE OR RecSet.EOF
If RecSet("Password") = Request.Form("Password") Then
Y = TRUE
Exit Do
End If
RecSet.MoveNext
Loop
End If
If X = FALSE Then
Response.Redirect "default.asp"
ElseIf Y = FALSE Then
Response.Redirect "default.asp"
End If
If X = TRUE AND Y = TRUE Then
Session("Email") = Request.Form("Email")
Session("password") = Request.Form("password") %>
Du hade inte behövt nämna IDG, det ser man på långa vägar. Man känner stanken! :x
Hela det där äckliga kodblocket kan du ersätta med koden nedan, och då får du något som både fungerar och är hyfsat säkert:
strSQL = "SELECT * FROM medlem WHERE Email = '" & replace(Request.Form("Email"), "'", "''") AND [Password] = '" & Replace (Request.Form("Password"), "'", "''") & "'"
set RecSet = Connect.Execute(strSQL)
If recset.eof then
Response.redirect "default.asp"
else
Session("Email") = Request.Form("Email")
Session("password") = Request.Form("password") %>
end if
Det är nästan så man borde lägga till en paragraf i regelverket som förbjuder postning av VBScript-kod från IDG och tillåter att inlägg med den redigeras, för det finns inget annat ord än fullständig skandal om man tittar på det där scriptet.
Inget illa ment mot trådskaparen dock, det är IDG jag riktar kritik emot.