Håller på med ett projekt där jag ska ansluta mot en extern internet-tjänst. I dagsläget finns det lite påbörjad kod som jag är i full gång att skriva om. För att använda denna tjänsten så måste man ha ett abonnemang med användarnamn och lösenord mm. Lösenordet är angivet i klartext i programkoden men tanken är nu att jag ska flytta över abonnemangsuppgifterna till en databas. Jag vill helst inte spara lösenordet i klartext.
Att kryptera lösenordet är inte svårt men det kommer ju inte fungera särskilt bra att skicka över ett krypterat lösenord till den externa tjänsten eftersom den inte känner till vilken kryptering jag använder. Hur brukar man göra i sådana här fall? Jag skulle ju kunna hitta på en egen kryptering som går att få tillbaka i klartext men det känns inte helt optimalt.
Med lite lek på huvudet skulle jag väl förslagsvis höra med leverantören av tjänsten och se vilka alternativ det finns. Dock ett alternatic kan väl vara att du sparar krypterade lösenord i databasen, och vid användning av tjänsten (när du anropar den) dekrypterar du lösenordet. På så viss är lösenordet i databasen åtminstone "skyddat", dock inte via transfer över nätet.
Med lite lek på huvudet skulle jag väl förslagsvis höra med leverantören av tjänsten och se vilka alternativ det finns.
Tyvärr är det "ännu" mer hinder eftersom anslutningen sker via en COM-komponent, dvs: .NET-applikation -> COM-komponent -> Extern tjänst.
Fredde Mannen skrev:
Dock ett alternatic kan väl vara att du sparar krypterade lösenord i databasen, och vid användning av tjänsten (när du anropar den) dekrypterar du lösenordet. På så viss är lösenordet i databasen åtminstone "skyddat", dock inte via transfer över nätet.
Ja det räcker att lösenordet är skyddat när det väl ligger i databasen. Men det går inte att få tillbaka lösenordet i klartext på ett enkelt sätt när det väl är krypterat....
Att kryptera lösenordet är inte svårt men det kommer ju inte fungera särskilt bra att skicka över ett krypterat lösenord till den externa tjänsten eftersom den inte känner till vilken kryptering jag använder. Hur brukar man göra i sådana här fall? Jag skulle ju kunna hitta på en egen kryptering som går att få tillbaka i klartext men det känns inte helt optimalt.
Det vanliga är att man kör med en kombination lösenord + IP-koll. På det viset kan ditt lösenord bara användas från den/de maskiner du kör din applikation på. Det är inte en helt optimal lösning (framför allt pga NAT och liknande) men det är ungefär så bra som det går att få det. Visst kan du kryptera lösenordet med någon symmetriskalgoritm (hitta inte på en egen bara), men eftersom initialiseringsvektorn till krypteringen ändå måste finnas i koden är det en måttlig vinst. Det krånglar till det lite men gör det inte direkt svårare för en kompetent angripare att få tag på lösenordet.