webForumDet fria alternativet

Säker inloggning

ASP

3 svar · 330 visningar · startad av freddssite

Medlem sedan maj 2001123 inlägg
Frågan#1

Jag undrar om denna inloggningen är korrekt gjord och säker? Jätte tacksam för svar...:)

<%
' 0===================================================================0
' 		Kontroll Användare
' 0===================================================================0
	
If Request.Querystring("kontroll") = "anvandare" Then	

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("safe.mdb") & ";pwd=kalle;"
Set RecSet = Server.CreateObject("ADODB.Recordset")

username = replace(request.form("user"),"'","''")
password = MD5(replace(request.form("pass"),"'","''"))

SQL = "SELECT * FROM userid where user= '"&username&"' and pass= '"&password&"'"
RecSet.Open SQL, Connect

If RecSet.EOF then
Connect.Close
Set Connect=Nothing
Session.Abandon
Response.Redirect "default.asp?session=De blev något fel, försök igen!"
	
Else if RecSet("aktiv") = "nej" then
Connect.Close
Set Connect=Nothing
Session.Abandon
Response.Redirect "default.asp?session=Konto ej aktivt, kontakta Webmaster!"
end if

Session.TimeOut = 120

Session("valkommen") = recset("valkommen")

Connect.Close
Set Connect=Nothing

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("safe.mdb") & ";pwd=kalle;"
Set RecSet = Server.CreateObject("ADODB.Recordset")

Uppdatera = "SELECT * FROM userid WHERE user= '"&username&"' and pass= '"&password&"'"
RecSet.Open Uppdatera, Connect, adOpenDynamic, adLockOptimistic
		
RecSet("inloggad") = date+time
		
RecSet.Update
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing

Response.Redirect "../space/mir/default.asp"

End If 
End If %>
Medlem sedan dec. 19996 721 inlägg
#2

Rätt så bra, men

-Onödigt att öppna samma databaskoppling två gånger
-Onödigt att SELECT:a ut ett recordset för att uppdatera
-Lite tokig if-struktur
-Strängar måste URLEncodas när de ska med i en querystring

<%
' 0===========================================================  ========0
' 		Kontroll Användare
' 0===========================================================  ========0

If Request.Querystring("kontroll") = "anvandare" Then	

	username = replace(request.form("user"),"'","''")
	password = MD5(replace(request.form("pass"),"'","''"))

	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("safe.mdb") & ";pwd=kalle;"
	
	SQL = "SELECT * FROM userid where user= '"&username&"' and pass= '"&password&"'"
	Set RecSet=Connect.Execute(SQL)

	If RecSet.EOF then
		Connect.Close
		Set Connect=Nothing
		Session.Abandon
		Response.Redirect "default.asp?session=" & Server.URLEncode("De blev något fel, försök igen!")
	Elseif RecSet("aktiv") = "nej" then
		Connect.Close
		Set Connect=Nothing
		Session.Abandon
		Response.Redirect "default.asp?session=" & Server.URLEncode("Konto ej aktivt, kontakta Webmaster!")
	end if

	Session.TimeOut = 120

	Session("valkommen") = recset("valkommen")

	Uppdatera = "UPDATE userid SET inloggad=Now() WHERE user= '"&username&"' and pass= '"&password&"'"
	Connect.Execute Uppdatera,,128
	
	Connect.Close
	Set Connect = Nothing

	Response.Redirect "../space/mir/default.asp"

End If %>
Medlem sedan maj 2001123 inlägg
#3

Strängar måste URLEncodas när de ska med i en querystring....varför då? vad gör de?

Medlem sedan aug. 2002536 inlägg
#4

pwd=Kalle kan du lika gärna ta bort. Det är ändå lätt att knäcka lösenord till databaser.
Lägg istället databasen utanför www mappen på servern, tex en mapp som heter db.

249 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)