Just nu i M3-nätverket
Jump to content

Login-system


Dada

Recommended Posts

Tja!

 

Skulle vilja ha så att man måste logga in på en sida (för att kunna administrera en annan sida)

 

Men hur gör man smidigast ett "inloggningssystem" i ASP.NET VB och med en MySQL-databas?

 

Har gjort liknande i Traditionell ASP, då alltså ASP-sidan jämförde värdena Formulären med dom i databasen och släppte igenom användarna när det stämde.

Nu skulle jag vilja göra likadant i .NET och med en MySQL-databas.

 

Hur ska jag gå tillväga?

 

/Dada

 

Link to comment
Share on other sites

mm...

 

 

låter bra, men sidan hade inget att göra med hur man "jämför" namn och lösenord i en databas.

 

Link to comment
Share on other sites

Det är ju inte så svårt, ställ en SQL fråga typ:

SELECT foo FROM mytable WHERE username='myusername' AND password='mypassword'

sen är det ju bara att kolla om du har fått tillbaka en rad från databasen, har du det då är personen rätt inoggad, annars är det fel.

 

/Jocke

 

"Shit! What? Rollers. No? Yeah. Shit!" - Blues Brothers

 

 

Link to comment
Share on other sites

Man bör dock inte spara lösenorden i klartext i databasen. De bör köras igenom en envägs-hashfunktion. Sedan så gör man samma sak med det lösenord som en användare specifierar för att se om man fått samma resultat och därigeom uppgett rätt lösenord.

 

Men är det bara nån liten privat sida som inte kommer innehålla några känsliga saker kan man väl kanske hoppa över det, men det är inte att rekomendera. Tänk dessutom på att folk använder samma lösenord på många ställen och får man reda på ett så kan man ta sig in på flera ställen.

 

Dessutom bör inte du kunna se användarnas lösenord.

 

Det gör naturligvis att man inte kan köra fråga riktigt som den ser ut, utan att först 'hasha' lösenordet och använda resultatet vid SELECT frågan

 

Link to comment
Share on other sites

Lite förenklat kan man kanske säga att en hash-funktion tar ett invärde och omvandlar det en sträng eller byte-array av en bestämd längd. Det skall vara lätt att omvandla värdet åt ett håll men svårt att göra det baklänges och därigenom få fram meddelandet från hash funktionen. För en riktigt bra funktion skall det dessutom vara nästan omöjligt att hitta två inparametrar som ger samma hashfunktion.

 

På det här sättet så kan man spara undan information krypterat på ett sätt så att man inte kan få fram den ens om man vet vilken algoritm som använts vid krypteringen.

 

Man kan även "salta" lösenordet genom att kryptera användarnamn+lösenord till ett hashvärdet. Det gör det mångdubbelt svårare att få fram ett lösenord eftersom nu kommer det bara finnas unika värden i databasen. Annar så skulle man kunna se vilka användare som hade samma lösenord och vidta vissa åtgärder för att lista ut vad det var.

 

Här är ett exempelt jag hittat på en enkel funktion som "hashar" en text (C# kod):

public static byte[] EncryptPassword(string password)
 {
      //
      // Create a new Unicode Encoding, and create a hash
      // over the password
      //
      UnicodeEncoding encoding = new UnicodeEncoding();
      byte[] hashBytes = encoding.GetBytes(password);

      //
      // Encrypt the password with the SHA1 Crypto Service
      // provider, and return it to the caller.
      //
      SHA1 sha1 = new SHA1CryptoServiceProvider();
      byte[] cryptPassword = sha1.ComputeHash(hashBytes);
      return cryptPassword;
 }

 

Hoppas det hjälper

 

Redigering av posten, tillägg:

Kom på att nämna att det blir omöjligt att skicka tillbaka en användares användarnamn om han skulle glömma det på det här sättet. Det är därför många tjänster ber om en lösenordsledtråd (t.ex. Favoritdjur?) för att man skall komma ihåg det. Det enda alternativet för att ge användaren sitt lösenord är att generera ett nytt som man skickar till honom. Vill man ha det lite mer säkert så ser man till att det är ett engånslösenord så användaren måste ändra det när han loggat in en gång.

 

 

 

[inlägget ändrat 2003-04-17 10:49:13 av anteD]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...