Just nu i M3-nätverket
Gå till innehåll

Säker inloggning?


Roger W

Rekommendera Poster

Jag undrar om det finns något säkert sätt att logga in? Jag brukar använda följande:
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open Session("appDSource")
Set objCmd  = Server.CreateObject("ADODB.Command")
Set search1   = Server.CreateObject("ADODB.Recordset")
search1.CursorType = adOpenForwardOnly
search1.LockType = adLockOptimistic
Set objCmd.ActiveConnection = ObjdbConnection
objCmd.CommandText = "SELECT * FROM admintabell WHERE ID=? AND PWD=?"
objCmd.CommandType = adCmdText
    
'Parameter
Set PARAMETER2 = Objcmd.CreateParameter("ID",     adVarChar,adParamInput,50,0)
objCmd.Parameters.Append PARAMETER2
PARAMETER2.Value = uid

Set PARAMETER1 = Objcmd.CreateParameter("PWD", adVarChar,adParamInput,50,0)
objCmd.Parameters.Append PARAMETER1
PARAMETER1.Value = pwd
    
search1.Open objCmd     

 
...varpå jag kollar om jag fått någon träff...
 
    if NOT search1.EOF then 'Träff 
        Sätta lite sessionsvariabler
        Diverse
    end if

 

Men jag undrar hur säkert detta är. Bl.a. skickas ju ID och PWD mellan inloggningsformuläret och detta formulär okrypterat.

 

Till min fråga: Kan detta göras på något annat (säkert...) sätt?

 

 

Roger

Länk till kommentar
Dela på andra webbplatser

För att förhindra avlyssning så måste du använda https-protokollet. Det gör du enklast genom att kolla med ditt webbhotell om dom säljer ssl-certifikat. Om dom gör det så kan dom antagligen hjälpa till och sätta upp allt åt dig. På så vis får du en länk https://www.minhemsida.se/inloggning.asp

 

För att säkra upp databasen så vill du inte spara lösenordet i klartext utan istället spara en kryptografisk hash med en såkallad salt.

 

Exakt hur man gör kan variera lite, men i grova drag fungerar det så här, du tar användarens lösenord som en array av bytes, lägger på ett antal slumpmässiga bytes på slutet av denna array (det är saltet), kör arrayen genom en hash algoritm och sparar resultatet av denna algoritm i databasen.

 

Sen när användaren vill logga in så gör du i stort sett samma procedur, du tar lösenordet som en byte array, lägger på salt på slutet, kör genom hash algoritmen och sen jämför du resultatet med det som ligger i databasen. Om det stämmer så angav användaren rätt lösenord.

 

Knepet här är att spara undan de slumpmässiga bytes som genererats så att användaren kan logga in, en lösning jag såg var att eftersom resultatet sparas som en byte array så lade dom den i arrayen efter att hash genererats. Eftersom man på förväg vet hur lång hashen är så fungerade det i det här fallet.

 

Det låter jättekomplicerat och i klassisk asp så är det antagligen det. I .NET så finns det något som heter membership providers som mer eller mindre gör det här helt automatiskt åt dig, du behöver knappt skriva någon kod själv.

 

Men om du gör det så kommer det bli svårt att avlyssna trafiken till din hemsida och det kommer bli vädligt krångligt att stjäla lösenord.

Länk till kommentar
Dela på andra webbplatser

Ahhh. Trist nog är detta en Classic-Asp app jag fått ta hand om. Kunden vill inte/anser sig inte ha råd att porta över den till .NET. Så det är bara att gilla läget.

 

Tack i alla fall..

Länk till kommentar
Dela på andra webbplatser

Det finns en möjlig lösning på den bifogade länken nedan. Det är en classic asp lösning för att hasha lösenord. Men jag har inte detaljgranskat hur lösningen fungerar eller om dom byggt in något enkelt stöd för salt.

 

http://forums.aspfree.com/code-bank-54/asp-classic-sha1-hash-82166.html

 

Tack som f#n! Skall omedelbart kolla igenom.

Lösenordet ligger alltså lagrat i hashat format? När jag anger mitt lösenord skall alltså applikationen konvertera detta till samma format som ligger lagrat, och först DÄREFTER görs jämförelsen? Har jag förstått det korrekt?

 

R

Länk till kommentar
Dela på andra webbplatser

Precis. För en hash kan inte återskapas i dess ursprungliga form. Så man kör altid algoritmen och jämför resultatet.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...