webForumDet fria alternativet

säker inloggning

ASP

3 svar · 378 visningar · startad av da97enla

Medlem sedan dec. 2001343 inlägg
Frågan#1

Hej
Är detta säkert inloggningsmässigt?

SQL = "SELECT * FROM [users] WHERE [user] = '" & trimVars("user") & "' AND [view] = TRUE;"
set mySQL = Conn.Execute(SQL)
on error resume next

IF mySQL("password") = trimVars("password") THEN
session("ID") = mySQL("ID")
session("userID") = mySQL("ID")
session("name") = mySQL("firstname") & " " & mySQL("lastname")
session("email") = mySQL("email")

Mvh
enla

Medlem sedan juli 20041 081 inlägg
#2

Jag har en kurs på http://www.bloody-mary.dk där det står en hel del om inloggning... Lycka till

Medlem sedan juli 20041 183 inlägg
#3

jag brukar byta ut en enkelfnutt på två enkelfnuttar och ett citattecken mot två citattecken innan jag kör en koll på om det som skrivits in är rätt eller fel...

str = Replace(str,"""","''")
str = Replace(str,"'","''")

annars brukar folk skriva lite ' or pwd <> ' eller vad det nu är så att de ändrar hela koden och kommer in om "lösenorde INTE stämmer"...

Medlem sedan dec. 19995 875 inlägg
#4

Det ser ganska bra ut, men exakt vad du gör i din trimvars() framgår inte. Läs gärna om sql-injection på swesecures hemsida http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=29a58b01-ca79-4877-b924-4f5da18d4a2a

Det ser dock ut som att du i din databas lagrar användarnas lösenord i klartext. Det är inte speciellt snäll om någon skulle komma över databasinformationen exempelvis genom ett fel på din sida. Swesecure har en artikel som beskriver hur du kan förhindra detta mer i detalj här http://www.swesecure.com/?ID=683ede3d-d472-459a-a841-14a95f58c891&IID=8ac9010e-9acd-41e0-9ad0-c8ee07d69d0f

Såhär kan ett relativt vanligt och enkelt registrering/inloggningsförfarande se ut.

Registrering
-------
1. Användaren matar in önskat användarnamn och lösenord
2. Du generar ett användarunikt salt, helst på mer än 16 tecken.
3. Du tar användarens inmatade lösenord och lägger ihop med det genererade saltet och gärna även ett systemsalt och hashar med exempelvis SHA512.
4. Du skickar in användarnamn och hashat lösenord samt användarsalt och sparar i databasen.

Inloggning
-------
1. Användaren matar in sitt användarnamn och lösenord
2. Du hämtar salt och hashat lösenord baserat på användarnamnet
3. Du hashar användarsalt, inmatat lösenord och systemsalt på samma sätt som registreringen och jämför med lösenordet du fick när du hämtade det hashade lösenordet från databasen i steg 2.
4. Är lösenordet i databasen samma som det lösenordet som du hashade nyss så har användaren matat in ett korrekt lösenord och du kan exempelvis spara användarID i sessions eller hur du nu väljer att gå vidare.

Det är också viktigt att skydda din site mot XSS och swesecure har en artikel om det här http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=436d5180-8909-4aa2-baee-7c8f925d6eab

Lycka till med din site!

256 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)