La liste de contrôle de sécurité essentielle pour l'identité de l'utilisateur
La création d'une identité d'utilisateur est un composant critique de toute application. Valider les noms d'utilisateur et les mots de passe peut sembler être l'approche la plus simple, mais il y a beaucoup d'autres aspects à considérer.
Introduction
La création d'une identité d'utilisateur est un composant critique de toute application. Elle vous permet de fournir des expériences personnalisées, d'améliorer la qualité des données et d'améliorer la rétention des utilisateurs.
Valider les noms d'utilisateur et les mots de passe peut sembler être l'approche la plus simple, mais il y a beaucoup d'autres aspects à considérer. Commençons!
Infrastructure
Obliger l'utilisation de HTTPS
Commençons par les bases. Assurez-vous toujours de l'utilisation de HTTPS (Hypertext Transfer Protocol Secure) pour crypter la transmission de données par Internet. HTTPS garantit que les données échangées entre l'appareil de l'utilisateur et votre serveur restent confidentielles et à l'épreuve des manipulations.
La mise en place de HTTPS peut sembler ardue, mais de nombreux outils et services sont disponibles pour vous aider:
- Si vous hébergez vous-même, Let's Encrypt fournit gratuitement des certificats SSL / TLS qui peuvent être utilisés pour activer HTTPS sur votre site Web.
- Si vous utilisez un fournisseur de cloud comme AWS, Azure, ou Google Cloud, vous pouvez utiliser leurs services gérés pour mettre en place HTTPS.
Ne permettez pas l'accès public à la base de données, limitez à des sources fiables uniquement
Bien que cela puisse sembler aussi fondamental, il y a eu de nombreuses violations de sécurité dues à l'autorisation d'accès public aux bases de données. Il est donc important de le mentionner ici.
N'oubliez jamais de ne jamais autoriser l'accès public à votre base de données. Mettez votre base de données dans un réseau privé et n'autorisez l'accès qu'à des sources de confiance.
Gérez les tokens privés en toute sécurité
Les tokens privés, tels que les tokens d'accès ou les clés API, sont souvent utilisés à des fins d'authentification et d'autorisation programmatiques. Pour gérer ces tokens en toute sécurité:
- Utilisez des tokens à courte durée de vie et des tokens actualisables pour minimiser le risque d'accès non autorisé.
- Utilisez un mécanisme de stockage de tokens sécurisé, tel qu'un réservoir de clés, pour protéger les tokens contre l'accès non autorisé.
- Faites pivoter régulièrement les tokens pour éviter qu'ils ne soient compromis. Certains protocoles, comme OAuth 2.0, fournissent un mécanisme de rotation de tokens.
- Conservons le contrôle de la révocation des tokens en cas de violation de la sécurité.
Choisir une algorithm de hachage de mot de passe intelligemment
Si vous avez de l'expérience avec le hachage de mots de passe, vous savez peut-être qu'il existe de nombreux algorithmes disponibles, certains d'entre eux ne sont plus considérés comme sécurisés, comme MD5, SHA-1 et SHA-2.
Certaines raisons courantes de leur manque de sécurité sont:
- Ils n'ont pas été spécifiquement conçus pour le hachage de mots de passe, et leur vitesse de calcul est trop rapide, ce qui facilite les attaques par force brute.
- Ils manquent l'utilisation de sel, ce qui facilite la création de tables de rainbow tables pour eux.
- Ils sont susceptibles aux attaques de collision, permettant aux attaquants de générer des mots de passe différents avec la même valeur de hash.
Les algorithmes de hachage de mot de passe standard de l'industrie, comme bcrypt et Argon2, ont été conçus pour résoudre ces problèmes. En raison de la portée limitée de cet article, nous n'entrerons pas dans le détail sur eux. Voir L'évolution du hachage de mot de passe pour en savoir plus.
Apprenez et respectez strictement les normes ouvertes
Les normes ouvertes comme OAuth 2.0 et OpenID Connect (OIDC) fournissent des approches sécurisées et standardisées pour l'authentification et l'autorisation des utilisateurs. Elles ont été testées en combat et largement adoptées par l'industrie.
Cependant, les implémenter de manière incorrecte peut entraîner des vulnérabilités de sécurité, même pour les grandes équipes avec des d éveloppeurs expérimentés. Un exemple récent est la vulnérabilité OAuth découverte à Expo, un cadre populaire pour la création d'applications mobiles. Il sert de bon exemple de comment une petite erreur peut entraîner une violation de sécurité.
Crypter les données au repos
Les données au repos, comme les informations d'utilisateur stockées ou les sauvegardes de base de données, devraient être cryptées en utilisant un algorithme de cryptage fort. Cela garantit qu' même si les données sont compromises, elles ne peuvent pas être lues sans la clé de déchiffrement. Vérifiez si votre fournisseur de cloud supporte cette fonctionnalité, car elle est communément requise pour des raisons de compliance.
Mettez en place des pare-feu
Les attaques DDoS (refus de service distribué), bien qu'anciennes, restent une menace signifiante. D'après le rapport de menaces DDoS de Cloudflare pour le Q4 2022, la quantité de trafic d'attaque DDoS HTTP a augmenté de 79% YoY. Au lieu de construire votre propre solution, il est préférable de mettre en place des pare-feu gérés et d'utiliser des notificateurs pour mitiger ce risque.
Apps et clients
Améliorez le niveau de sécurité pour les clients publics
Les clients publics, comme les applications mobiles ou les applications à page unique, sont plus susceptibles aux vulnérabilités de sécurité. Même si vous les fournissez, vous devriez les traiter comme des sources non fiabilisées dans votre modèle de sécurité. Par exemple:
- Si vous utilisez OAuth 2.0, utilisez Nouveauté clé pour l'échange de code (PKCE) pour se protéger contre les attaques d'interception de code d'autorisation.
- Appliquez Politique de sécurité du contenu (CSP) pour atténuer certains types d'attaques, dont le Cross-Site Scripting (XSS) et les attaques d'injection de données.
Ne faites jamais confiance aux données d'entrée public
L'entrée d'utilisateur peut être une source significative de vulnérabilités de sécurité, souvent négligée. Certains types communs de vulnérabilités négligées sont le Cross-Site Scripting (XSS) et l'Injection SQL. Assurez-vous de valider et de nettoyer toutes les données d'entrée utilisateur avant de les utiliser.
Gardez trace des activités
Maintenir une piste de vérification des activités utilisateur aide à la détection et à l'enquête des incidents de sécurité. Enregistrez et surveillez les actions utilisateur, comme les essais de connexion, les changements de mot de passe, ou les opérations sensibles. Analyser ces enregistrements peut fournir des indications précieuses sur les potentielles violations de sécurité ou activités suspectes.
Mettez en place une authentification solide
Mettez en place un mécanisme d'authentification fort pour vérifier l'identité des utilisateurs. Comme mentionné précédemment, considérez l'utilisation de protocoles sécurisés comme OAuth 2.0 ou OpenID Connect pour l'authentification. Pour plus d'informations, vous pouvez vous référer à CIAM 101: Authentification, Identité, SSO.
Construisez une autorisation solide (par exemple, mettre en œuvre un contrôle d'accès basé sur les rôles)
En addition à l'authentification, des mécanismes d'autorisation appropriés devraient être en place. Mettez en œuvre un contrôle d'accès basé sur les rôles (RBAC) pour garantir que les utilisateurs n'ont accès qu'aux ressources et actions qu'ils sont autorisés à effectuer. Pour plus d'informations, vous pouvez vous référer à CIAM 102 : Autorisation & Contrôle d'accès basé sur les rôles.
Mettez en place une authentification à facteurs multiples (MFA)
L'authentification à facteurs multiples (MFA) ajoute une couche de sécurité supplémentaire en demandant aux utilisateurs de fournir une ou plusieurs formes d'identification, comme un mot de passe et un code unique envoyé sur leur appareil mobile. Un autre bon exemple de MFA est lorsque GitHub demande aux utilisateurs de rentrer un code unique de leur application mobile, qui est affiché sur le site web, pour des opérations sensibles comme la suppression d'un repository.
Cependant, avoir une MFA n'est pas une nécessité pour la plupart des startup en début de vie, surtout si vous n'avez pas une solution prête-à-l'emploi. Cela peut être excessif et avoir un impact négatif sur l'expérience utilisateur.
Culture
Les conseils fournis ci-dessus couvrent généralement les mesures de sécurité "passives", qui sont connues avant qu'un incident de sécurité se produise. Cependant, il y a aussi des mesures de sécurité "actives" que vous pouvez prendre pour améliorer votre posture de sécurité globale, qui sont plus efficaces sur le long terme.
Éduquez votre équipe et vos utilisateurs sur le phishing et l'ingénierie sociale
Les attaques de phishing et l'ingénierie sociale sont critiques parce qu'elles peuvent rendre beaucoup des mesures de sécurité mentionnées ci-dessus inutiles. Par exemple, si un utilisateur est dupé en donnant son mot de passe ou en cliquant sur une photo de chat en apparence innocente qui contient un malware, la force de votre algorithme de hachage de mot de passe ou les règles de votre pare-feu deviennent sans importance.
La plupart des gens trouvent l'éducation à la sécurité ennuyante, et c'est souvent le cas. Donc, changez la fa çon dont vous éduquez votre équipe et vos utilisateurs. Par exemple, vous pouvez simuler un email de phishing avant qu'un véritable attaquant ne le fasse et démontrer comment l'identifier. Vous pouvez même offrir des récompenses pour le signalement de l'email à l'équipe de sécurité.
Mettez en place DevSecOps
En plus des revues de sécurité manuelles, vous pouvez aussi mettre en œuvre des pratiques DevSecOps pour automatiser les vérifications de sécurité. Par exemple, vous pouvez mettre en place une pipeline CI / CD pour faire fonctionner des outils d'analyse de code statique comme CodeQL et faire automatiquement fonctionner des essais de pénétration utilisant des outils comme OWASP ZAP.
Adoptez la configuration la plus stricte sans impact sur l'expérience utilisateur
Quand il s'agit de sécurité, optez toujours pour la configuration la plus sécurisée qui n'a pas d'impact négatif sur l'expérience utilisateur. Évitez de prendre des raccourcis ou de compromettre la sécurité pour la commodité. La sécurité devrait toujours être une priorité.
En tant que startup ou développeur indépendant, vous pouvez avoir l'impression de manquer les ressources nécessaires pour mettre en œuvre ces mesures. Néanmoins, il existe des services de sécurité professionnels disponibles qui offrent des options gratuites ou amicales pour les startups. Prenez le temps de les évaluer et d'envisager de les utiliser.
Conclusion
La sécurité est un sujet complexe, et il est impossible de tout couvrir dans un seul article. Nous espérons que cet article vous a aidé à construire un sentiment de sécurité plus fort pour vous ou pour votre équipe. Si vous développez une nouvelle application, vous voudrez peut-être aussi consulter Logto, une plateforme qui vous aide à développer, gérer, et sécuriser les identités utilisateur de votre produit avec un effort minimal.