Håller på att skriva en aplikation som kommer använda användarnamn och lösenord för att bla. ansluta mot en databas och för att skicka sms. Lägg det i en XML fil men du kan ju kryptera det först. Kör man "Trusted Connection" till databasen så låter databasen som ett ställe att kunna spara password i, men även här kan det ju vara idee att spara dem krypterade. <B>Kan du inte lägga det i databasen som du ansluter till?</B> Visst kompilera in nyckel, salt etc. Du använder ju det både för att skriva och hämta. Kompilera in nyckeln? Och när någon dekompilerar programet (med ex. Fox .NET Decompiler) och läser nyckeln rakt ut? Lägg koden på en webbserver, skapa en webservice, låt applikationen ansluta mot webservicen. Applikationen måste fråga om användarnamn och lösenord för att få använda webservicen. Ingenting sparas på klienten Tyvärr går det inte att räkna med att det finns en internetupkoppling. Varför vill du inte spara både inloggningsnamn och lösenord i databaser i en ’Tabel’? och göra en Stored procedure (den ska göra hela jobbet dvs. returnera 1 om uppgifterna är felaktiga, 2 om användare har tillgång till del_1 i din applikation, 3 om användare har tillgång till del_2 i din applikation, 4,,,,) Därför att det krävs inloggning till databasen. Och den datan måste i så fall lagras nån stan och vipps är man tillbaka på ruta null. Men om du använder användarens inmatade password som 'password' vid kryptering och dekryptering så har du väl löst det hela! Funkar med de klasserna jag nämnde tidigare ( http://www.obviex.com/samples/dpapi.aspx )... Får kanske lägga till någon felhantering för jag har för mig att de kastar exception om det är fel password. Så du behöver en som kan logga in först. Varför inte logga in datat i Web.config eller i Registry då? Kryptera det också som Benny föreslår. Någonstans här börjar jag undra vad det är som skall lösas. Är det ritningar till en atombomb som skall skyddas? Tack för svaret Johan. Gav mig några bra ideer...Lösenord
Frågan är bara var man skall göra av denna data. Att lägga in det i koden är ju dumt då det lätt går att läsa ut den därifrån även när programmet är "kompilerat". Att lägga det i en xmlfil eller registret är ju lika osäker det.
Krypterar man lösenordet måste man ju fortfarande ha nyckeln till krypteringen liggande nån stans.
Hur löser man problemet?Sv: Lösenord
Här finns en class som löser crypteringen.
http://www.obviex.com/samples/dpapi.aspx
Och här finns saker för att lagra i xml etc. riktigt bra saker:)
http://www.codeproject.com/csharp/ReadWriteXmlIni.aspSv:Lösenord
Sv: Lösenord
Hur hande du tänk att jag skulle kunna ansluta till databasen med uppgifterna då? :/
<B>Lägg det i en XML fil men du kan ju kryptera det först.</B>
Som jag skrev. Då kommer nyckeln fortfarande behöva ligga nån stans.
Trusted Connection-lösningen känns inte heler så lyckad i det här fallet.Sv:Lösenord
Sv: Lösenord
Känns som .NET har ett stort problem. Allt man skriver blir automatiskt "open source". Vem som helt kan se din kod och stjäla den. Sv:Lösenord
Sv: Lösenord
Lösenordet och användarnamnet skall användas för onloggning i själva aplikationen (och vilka delar användaren skall se). Alla kommer ha olika användarnamn och lösenord.Sv:Lösenord
Ut från databaser returnerar du bara 1, 2, 3,,,,
Inloggnings dialog ska vara på din applikation och det spelar ju ingen roll om det finns en Internetanslutning eller inte.Sv: Lösenord
Sv:Lösenord
Den här artiklen kanske kan vara läsvärd
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT11.aspSv: Lösenord
Sv: Lösenord
Det finns tre grundläggande tester man bör tänka på vid dataskydd:
1) Det finns ingen 100% säker metod
2) Den metod som används skall stå i proportion till det som skall skyddas
3) Om skyddet är för komplicerat kommer användarna finna vägar att gå runt det, t.ex. lösenord nedskrivna på papperslappar fästa på bildskärmen
Vill man ha ett statiskt lösenord så kan man alltid lagra detta i en databas som är allmänt öppen för att man får köra SPs. All data lagras sedan krypterat för säkerhetsskull och i sin SP har man krypetringsnyckeln skyddad eftersom ändå ingen användare får läsa dess kod.
Med hjälp av denna så kan man sedan ansluta till en annan databas med "korrekta" behörigheter och därmed låta användar få tillgång till den data som är aktuell.
Vill man höja säkerheten så kan man använda dynamiska lösenord som beror på t.ex. veckodag, datum, klockslag etc. Svagheten här ligger i att man måste kommunicera metoden till alla användare och att man inte kan kontrollera om dessa sprider den vidare.
Vill man komma runt de viktigaste svagheterna här så kombinerar man statiskt lösenord med det dynamiska.
Vill man nu vara riktigt klurig så talar man inte om metoden för den dynamisak genereringen utan bygger istället en liten elektronisk krets som genererar ett lösenord automatiskt med jämna mellanrum. Gärna med challenge-respons från programmet som man skall logga in till.
Osv, osv. Det finns mängder med varianter, men som sagt dataskyddet får inte vara vigtigare än den data som skall skyddas!
// JohanSv:Lösenord
Antingen är det jag som är dum eller så har flertalet av er som svarat inte förstått problemet. Vad det handlar om är at "gömma" hemlig data. I detta fallet ett lösenord och användarnamn. Att t.ex. kryptera den "hemliga" datan skapar man ny hemlig data - nyckeln och ev. dekrypteringsalgoritmen.
Eftersom .NET-programmens kod är helt vidöppen kan man ju inte gömma något i den. Däremot ligger ju datan rellativt "gömd" i en databas. Men då måste man som sagt lösa lösenordsproblemet till den. Detta skulle ju faktiskt kunna lösas med Johans förslag.
En annan lösning som precis slog mig är att man skulle kunna använda databasens användarkonton för ansluta mot databasen. Frågan är om det är rätt att använda databasens konton på detta sättet?