Den nödvändiga säkerhetskontrollistan för användaridentitet
Att bygga användaridentitet är en kritisk komponent i vilken applikation som helst. Att validera användarnamn och lösenord kan verka som det enklaste tillvägagångssättet, men det finns många andra aspekter att överväga.
Introduktion
Att bygga användaridentitet är en kritisk komponent i vilken applikation som helst. Det möjliggör för dig att tillhandahålla personliga upplevelser, förbättra datakvalitet och förbättra användarretention.
Att validera användarnamn och lösenord kan verka som det enklaste tillvägagångssättet, men det finns många andra aspekter att överväga. Låt oss börja!
Infrastruktur
Tvinga HTTPS
Låt oss börja med det grundläggande. Tvinga alltid användningen av HTTPS (Hypertext Transfer Protocol Secure) för att kryptera datatransmission över internet. HTTPS säkerställer att data som utbyts mellan användarens enhet och din server förblir konfidentiell och skyddad mot manipulation.
Att ställa in HTTPS kan verka utmanande, men det finns många verktyg och tjänster tillgängliga för att hjälpa dig:
- Om du är egenvärdare tillhandahåller Let's Encrypt gratis SSL/TLS-certifikat som kan användas för att aktivera HTTPS på din webbplats.
- Om du använder en molnleverantör, till exempel AWS, Azure eller Google Cloud, kan du använda deras hanterade tjänster för att ställa in HTTPS.
Tillåt inte offentlig databasåtkomst, begränsa tillförlitliga källor endast
Även om det också kan verka grundläggande, har det funnits många säkerhetsöverträdelser på grund av tillåtelse av offentlig åtkomst till databaser. Så det är värt att nämna här.
Kom alltid ihåg att aldrig tillåta offentlig åtkomst till din databas. Placera din databas i ett privat nätverk och tillåt endast åtkomst från tillförlitliga källor.
Hantera privata tokens säkert
Privata tokens, som åtkomsttokens eller API-nycklar, används ofta för programmatisk autentisering och auktorisering. För att hantera dessa tokens säkert:
- Använd kortlivade tokens och uppfriskningstokens för att minimera risken för obehörig åtkomst.
- Använd en säker tokenlagringsmekanism, såsom ett nyckelvalv, för att skydda tokens från obehörig åtkomst.
- Roter regelbundet tokens för att förhindra att de komprometteras. Vissa protokoll, såsom OAuth 2.0, ger en mekanism för tokenrotation.
- Behåll kontroll över tokenåterkallande vid en säkerhetsöverträdelse.
Välj en lösenordshashalgoritm klokt
Om du har erfarenhet av lösenordshashning kanske du är medveten om att det finns många algoritmer tillgängliga, varav vissa inte längre anses säkra, såsom MD5, SHA-1 och SHA-2.
Några vanliga skäl till deras osäkerhet är:
- De var inte specifikt utformade för lösenordshashning, och deras beräkningshastighet är för snabb, vilket gör brute force-attacker enklare.
- De saknar användning av salt, vilket gör det enklare att skapa regnbågstabeller för dem.
- De är mottagliga för kollisionsattacker, vilket tillåter angripare att generera olika lösenord med samma hashvärde.
Branschstandard lösenordshashalgoritmer, såsom bcrypt och Argon2, är utformade för att åtgärda dessa problem. På grund av denna artikels begränsade omfattning går vi inte in i detalj om dem. Se The evolution of password hashing för att lära dig mer.
Lär dig och följ strikt öppna standarder
Öppna standarder som OAuth 2.0 och OpenID Connect (OIDC) ger säkra och standardiserade tillvägagångssätt för användarautentisering och auktorisering. De har testats i strid och blivit allmänt antagna av industrin.
Men att implementera dem fel kan leda till säkerhetsbrister, även för stora team med erfarna utvecklare. Ett nyligen exempel är OAuth-sårbarheten upptäckt i Expo, ett populärt ramverk för att bygga mobilappar. Det fungerar som ett bra exempel på hur ett litet misstag kan resultera i en säkerhetsöverträdelser.
Kryptera data i vila
Data i vila, såsom lagrad användarinformation eller databasbackuper, bör krypteras med en stark krypteringsalgoritm. Detta säkerställer att även om data komprometteras kan det inte läsas utan dekrypteringsnyckeln. Kontrollera dubbelt om din molnleverantör stöder denna funktion eftersom det ofta krävs för efterlevnad.
Ställ in brandväggar
DDoS (Distributed Denial of Service) attacker, även om de är uråldriga, förblir ett betydande hot. Enligt Cloudflare DDoS hotrapport för 2022 Q4, ökade mängden HTTP DDoS-angreppstrafik med 79% år över år. Istället för att bygga din egen lösning är det en bra idé att sätta upp hanterade brandväggar och använda notifieringar för att minska denna risk.
Appar och klienter
Förbättra säkerhetsnivån för offentliga klienter
Offentliga klienter, såsom mobilappar eller enkeltsida-applikationer, är mer mottagliga för säkerhetsbrister. Även om du tillhandahåller dem, bör du behandla dem som opålitliga källor i din säkerhetsmodell. Till exempel:
- Om du använder OAuth 2.0, använd Proof Key for Code Exchange (PKCE) för att skydda mot auktoriseringskod avlyssningsattacker.
- Tvinga på Content Security Policy (CSP) för att mildra vissa typer av attacker, inklusive Cross-Site Scripting (XSS) och datainjektionsattacker.
Lita aldrig på offentlig indatadata
Användarindata kan vara en betydande källa till säkerhetsbrister, ofta förbisedd. Några vanliga typer av förolyckade sårbarheter är Cross-Site Scripting (XSS) och SQL Injection. Se till att validera och sanera all användarindatadata innan du använder den.
Håll koll på aktiviteter
Att underhålla en granskningsspår av användaraktiviteter hjälper till att upptäcka och undersöka säkerhetsincidenter. Logga och övervaka användarhandlingar, såsom inloggningsförsök, lösenordsändringar eller känsliga operationer. Att analysera dessa loggar kan ge värdefulla insikter i potentiella säkerhetsöverträdelser eller misstänkta aktiviteter.
Implementera solid autentisering
Implementera en stark autentiseringsmekanism för att verifiera användarnas identitet. Som nämnts tidigare, överväg att använda säkra protokoll som OAuth 2.0 eller OpenID Connect för autentisering. För mer information kan du referera till CIAM 101: Authentication, Identity, SSO.
Bygg solid auktorisering (t.ex. Implementera Rollbaserad Åtkomstkontroll)
Förutom autentisering, bör lämpliga auktoriseringsmekanismer vara på plats. Implementera Rollbaserad Åtkomstkontroll (RBAC) för att säkerställa att användare endast har åtkomst till de resurser och åtgärder de är auktoriserade att utföra. För mer information, du kan referera till CIAM 102: Authorization & Role-based Access Control.
Implementera Multi-Factor Authentication (MFA)
Multi-Factor Authentication (MFA) lägger till ett extra säkerhetslager genom att kräva att användare tillhandahåller en eller flera former av identifiering, som ett lösenord och en engångskod skickad till deras mobila enhet. Ett annat bra exempel på MFA är när GitHub ber användare att ange en engångskod från deras mobilapp, vilken visas på webbsidan, för att utföra känsliga operationer som att ta bort ett arkiv.
Men, att ha en MFA är inte en nödvändighet för de flesta tidiga startups, speciellt om du inte har en ut-av-lådan-lösning. Det kan vara överdrivet och påverka din användarupplevelse negativt.
Kultur
Råden som ges ovan täcker mestadels "passiva" säkerhetsåtgärder, kända innan en säkerhetsincident inträffar. Det finns dock också "aktiva" säkerhetsåtgärder du kan vidta för att förbättra din övergripande säkerhetsposition, vilka är mer effektiva på lång sikt.
Utbilda ditt team och användare om nätfiske och social ingenjörskonst
Nätfiskeattacker och social ingenjörskonst är kritiska eftersom de kan göra många av de nämnda säkerhetsåtgärderna ovan värdelösa. Till exempel, om en användare luras att lämna ut sitt lösenord eller klicka på en till synes oskyldig kattbild som innehåller skadlig programvara, blir styrkan i din lösenordshashalgoritm eller brandväggsregler irrelevant.
De flesta människor tycker att säkerhetsträning är tråkig, och det är ofta det. Så, ändra sättet du utbildar ditt team och användare. Till exempel, du kan simulera ett nätfiskemail innan en faktisk angripare gör det och demonstrera hur man identifierar det. Du kan även erbjuda belöningar för att rapportera e-posten till säkerhetsteamet.
Sätt upp DevSecOps
Utöver manuella säkerhetsgranskningar kan du även implementera DevSecOps-praktiker för att automatisera säkerhetskontroller. Till exempel, du kan ställa in en CI/CD-pipeline för att köra statisk kodanalysverktyg som CodeQL och automatiskt köra penetrationstester med verktyg som OWASP ZAP.
Anta den mest strikta konfigurationen utan att påverka användarupplevelsen
När det kommer till säkerhet, välj alltid den mest säkra konfigurationen som inte påverkar användarupplevelsen negativt. Undvik att ta genvägar eller kompromissa säkerheten för bekvämlighet. Säkerhet bör alltid vara en hög prioritet.
Som en startup eller indieutvecklare, kan du känna att du saknar de nödvändiga resurserna för att implementera dessa åtgärder. Ändå finns det professionella säkerhetstjänster tillgängliga som erbjuder gratis eller startup-vänliga alternativ. Ta dig tid att granska och överväga att använda dem.
Slutsats
Säkerhet är ett komplext ämne och det är omöjligt att täcka allt i en enda artikel. Vi hoppas att denna artikel har hjälpt dig att bygga en starkare känsla för säkerhet för dig själv eller ditt team. Om du bygger en ny app, kan du också vilja kolla in Logto, en plattform som hjälper dig att utveckla, hantera och säkra din produkts användaridentiteter med minimal ansträngning.