Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Autentiseringsuppgifter för användarnamn och lösenord är fortfarande vanliga för autentisering, även när starkare metoder som certifikat, biometri och nyckelnycklar blir mer utbredda. Krypteringsnycklar och andra hemligheter kräver också skydd. Programvarusystem måste hantera dessa autentiseringsuppgifter på ett säkert sätt för att förhindra stöld av autentiseringsuppgifter, återuppspelningsattacker och lateral förflyttning av angripare.
Varning
Hårdkoda aldrig lösenord, API-nycklar, anslutningssträngar eller andra hemligheter i källkoden. Hårdkodade hemligheter extraheras trivialt av angripare med hjälp av dekompilerare, minnesinspektion eller källkodsläckor. Detta är en av de vanligaste sårbarheterna för autentiseringsuppgifter som utnyttjas i naturen.
Important
När du har använt lösenord eller hemligheter i minnet skriver du omedelbart över bufferten genom att anropa SecureZeroMemory. Till skillnad från memsetkan kompilatorn inte optimera bort SecureZeroMemory, vilket säkerställer att hemligheter faktiskt rensas.
Modern hantering av autentiseringsuppgifter
För ny utveckling på Windows använder du dessa metoder i prioritetsordning:
- Eliminera lösenord där det är möjligt. Använd Windows Hello, nyckelnycklar (FIDO2/WebAuthn) eller certifikatbaserad autentisering för att undvika att hantera lösenord helt och hållet.
- Använd Windows Credential Manager. Anropa CredWrite och CredRead för att lagra och hämta autentiseringsuppgifter i autentiseringsvalvet för operativsystemet, vilket krypterar dem med användarens inloggningssessionsnyckel.
- Använd DPAPI för lokal hemlig lagring. Anropa CryptProtectData för att kryptera hemligheter som måste bevaras lokalt. DPAPI kopplar kryptering till användarkontot eller datorn, vilket ger skydd på djupet.
- För autentiseringsuppgifter för tjänsten använder du hanterade identiteter eller nyckelvalv. Tjänster som körs på Azure bör använda hanterade identiteter. Lokala tjänster bör hämta hemligheter från ett säkert valv vid körning i stället för att lagra dem i konfigurationsfiler.
Principer för lösenordshantering
När lösenord måste hanteras i kod:
- Samla in lösenord så sent som möjligt och ta bort dem så tidigt som möjligt. Minimera det fönster under vilket hemligheten finns i minnet.
- Logga aldrig lösenord eller hemligheter. Kontrollera att diagnostikloggning, händelseloggar och kraschdumpar inte innehåller material för autentiseringsuppgifter.
- Överför aldrig lösenord i klartext. Använd alltid TLS/HTTPS eller en motsvarande krypterad kanal.
- Uppmana säkert. Använd CredUIPromptForWindowsCredentials för att samla in autentiseringsuppgifter via dialogrutan standard Windows autentiseringsuppgifter, vilket framtvingar säker skrivbordsisolering.
Mer information om hot och åtgärder: