Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 10:50:56 - Joakim Abrahamsson, i forum visual studio.NET IDE, Tråden har 12 Kommentarer och lästs av 923 personer

Hur sparar man krypterat till en AccessDB eller MSSQL DB.
Att kryptera t.ex. ett lösenord som sparas i en databas, hur är säkerheten med en sådan lösning.


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 11:35:33 - Fredrik Normén

Säkerheten beror helt på vilken typ av kryptering du använder dig av.
Men det är alltid säkrare att ha lösenordet krypterat i någon form än icke krypterat.

Du kan tex använda dig av MD5CryptoServiceProvider klassen för att kryptera ditt lösenord.

/Fredrik N






Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 11:53:00 - Mikael Sand

Ett synnerligen enkelt men inte helt dumt sätt är att använda HASHCODE.
Det är en envägsvariant för att kryptera. Det ska egentligen användas för att indexera värden men funkar ganska bra eftersom du inte kan krytera dem baklänges.

Vad gör är att du tar HASH-värdet från lösenordssträngen. Koden är ett tal och det talet sparar du i databsen. När någon sedan ska logga in tar du åter HASH-värdet och jämför med det i databasen.

<code>
'Vid inloggning
ValidateLogin(txtPass.text.GetHashCode())
</code>

Annars kan du titta närmre på Namespacet Cryptography i hjälpen.

//Mikael.NET


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 12:42:23 - Mattias Lindberg

Jag håller med om vad Mikael skriver om att lagra lösenord icke-reversibelt genom en hash.

Men ibland vill man kunna få tillbaka lösenord eller annan krypterad text. Jag skulle rekommendera användande av Win32 API CryptProtectData och CryptUnprotectData för detta. Fördelen med dessa är att de krypterar baserat på den unika SID som en användare har i Windows, den behövs alltså inte lagras någon krypteringsnyckel på disk som någon annan kan komma åt.

För att köra dessa API i .NET måste man använda DllImport, VB.NET ett exempel finns på http://atomic.quilogy.com/downloads/DataProtector.vb.txt och C# på http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT08.asp.

Hoppas detta hjälper!

/Mattias


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 13:12:49 - Johan Normén

Bara en fråga ang crypto32.dll
Den metod du Mattias pratar om använder den SID man är som unik identifierare. Detta går ju bra så länge du kör i ett lokalt nätverk. Men när du kör via Webben kommer det ju alltid vara samma SID. Hur är säkerheten då?

//Johan N


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 13:16:37 - Johan Normén

Hej. Jag skulle inte använda GetHashCode() då denna kan variera beroende på Framework version, det är inte säkert du får ut samma retultat då. Sedan ger inte alltid GetHashCode() någon unik identifierare, felera exempel där man överlagrat den så har de returnerat en stängs längd som resultat.

"The behavior of GetHashCode is dependent on its implementation, which might change from one version of the common language runtime to another. A reason why this might happen is to improve the performance of GetHashCode. If you require the behavior of GetHashCode be constant, override the runtime implementation of GetHashCode with an implementation of your own that you know will never change."

Det är därför bäst att använda MD5 eller SHA1 som båda är Hash algoritmer.

PS. Hashning är inte kryptering ;-) Ds.

//Johan N


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-27 20:13:04 - Mattias Lindberg

Förstår inte riktigt frågan, men jag ska försöka svara iaf.

Den SID som används vid krypteringen är SID för aktuell process. Så om en användare kör en webbapp så är det ju fortfarande webbappens användare som kör. Exakt vad som händer vid impersonation vet jag faktiskt inte, eftersom jag normalt inte jobbar med ASP.NET...

I webbfallet så är det ju webbservern den applikation som ska kryptera/avkryptera så om man i detta fall lagrar i databas så kan enbart den användare/maskin som har skrivit in det krypterade lösenordet läsa upp det, vilket är praktiskt om man delar databas med andra applikation och det finns risk för att lösenordet kan läsas av andra.

Fast i fallet ovan tycker jag nog att en säkrare lösning skulle vara att lagra en hash, som nämnts tidigare, eftersom ingen (inkl admin på webbservern) kan komma åt lösenordet.

Det som jag använder CryptProtectData till i mina projekt är att lagra lösenord till andra system, t.ex. lösenord till ett affärssystem eller databas som man måste kommunicera med. Dessa system kan t.ex. köras på Solaris och man måste köra socket-kommunikation med dem.

Problemet man då ställs inför är att lagra ett lösenord på den maskin som ska anropa affärssystemet. Att bara lagra den direkt i registry eller fil känns inte så bra. En "riktig" kryptering med nyckel (a la RSA) kräver ju just en nyckel, och hur ska man då lagra den? Kanske kryptera den :-) Man kan ju inte ha ett smartkort som man stoppar i när man behöver eftersom B2B innebär automatisk integration, inte manuell.

Genom att lagra den krypterat med CryptProtectData så vet jag att den enda som kan komma åt informationen är den användare som har lagrat den. Visst, om burken hackas helt så kan informationen läsas men i så fall så kan man också läsa vilken annan information som helst.

Så om webbserven t.ex. behöver lösenord för kommunikation med databas, om man inte kan integrerad säkerhet, så tycker jag CryptProtectData är så gott som något...

Långt svar, men iaf ett försöt till motivering.

/Mattias


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-28 00:34:45 - Johan Normén

Hej.

Vad jag menade med SID:en var den att alla som surfar in på min applikation där jag inte använder Windows authentication får samma SID. ASP.Net användaren i detta fall. På så vis krypteras all data med just ASP.Net användaren och då blir den inte unik för varje web-applikations användare (då alla är ASP.Net användaren på servern.). Är du med? Har alla ASP.Net användare samma SID kod? (eller vad man nu kallar det?) I så fall skulle crypteringen ske med samma SID på alla servrar som använder ASP.Net och då skulle man ju troligen lätt kunna knäcka den krypterade datan om man kom åt den?

//Johan N


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-29 06:21:07 - Mattias Lindberg

Vad tusan nu då! Jag svarade ju på detta igår och nu är det borta!

Orsaken är säkert att när man skriver på ett svar en längre tid så timar sessionen ut mot pellesoft. När man klickar skicka så ser allt ut att gå bra (förutom att du kommer till startsidan och inte tillbaka till forum) och det skrivna är borta om man inte backar i browsern direkt. Jag skriver ibland i notepad först just pga detta men denna gång gjorde jag inte det...

Ska skriva ett nytt svar när jag orkar, just nu känner jag mig inte inspirerad...

/Mattias


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-29 10:35:41 - Johan Normén

Hej.
Förstår dig.
Har råkat ut för samma sak flera ggr.


//johan N


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-30 22:16:50 - Mattias Lindberg

Nu har jag samlat kraft igen... Men det blir inte lika långt som det var.

"The security identifier (SID) structure is a variable-length structure used to uniquely identify users or groups." Dvs varje användare i en workgroup eller domän har en SID som är helt unik, jmf GUID. Ett exempel på SID är: S-1-5-21-1220945662-854245398-1202660629-1009, detta är SID för mitt lokala ASPNET konto.

Varje maskin som kör ASP.NET har alltså ett ASPNET konto med en unik SID, så när krypteringen sker så är den unik för just den maskinen.

Angående unik information så vill du ju just att den ska krypteras centralt med central nyckel. Om jag vill kryptera info som bara jag vill läsa så skulle inte jag skicka den till en webbserver :-)

För att kolla just din SID (om man nu vill det) finns det kod på http://www.codeproject.com/useritems/GetUserSid.asp.

/Mattias


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-06-30 23:12:34 - Johan Normén

Hum det har du rätt i. Har inte använt lokala konton så mkt, särkilt inte SIDen.

Du hittar ingen site som har kod exempel på hur man får fram hela SDDL stängen?

//Johan N


Svara

Sv: Spara lösenord krypterat i en databas (från C# eller VB.NET).

Postades av 2003-07-01 06:34:20 - Fredrik Normén

Mattias du skrev: "så när krypteringen sker så är den unik för just den maskinen".

Om vi nu bestämmer oss för att köra en applikation i ett Web Farm så borde vi få problem här!?, om vi inte ändrar användaren som ska köra applikationen i IIS eller i web.config till en användare som finns i domänet. Alltså inte den lokala ASPNET användaren. För så länge vi kör med en lokal användare och krypterar med dennes SID som är unikt per användare och per maskin!?

/Fredrik N


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 615
27 953
271 709
330
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies