Pour la plupart des sites Web, vous avez différents domaines (page d'accueil, profil d'utilisateur, page d'administration, etc.), dont certains seront publics et d'autres devront être limités à certains utilisateurs. Vous souhaitez souvent identifier les utilisateurs de manière unique afin de pouvoir fournir un contenu personnalisé ou capturer des informations spécifiques d'un utilisateur. De nombreux sites doivent également protéger une partie du site, par exemple une zone administrative pour gérer et mettre à jour le contenu du site. Sur un site CMS, certains utilisateurs peuvent créer du contenu, mais d'autres doivent approuver ce contenu avant de le montrer au public..
Quel que soit le besoin, une restriction ou une personnalisation nécessite l'identification de chaque utilisateur accédant à votre site. Pour un site Internet destiné aux utilisateurs généraux, le nom d'utilisateur et le mot de passe prévalent toujours, car il n'y a pas de meilleure option. Il existe d'autres options si vous travaillez dans des environnements spéciaux, tels qu'un intranet d'entreprise, où vous avez un certain contrôle sur les visiteurs du site..
Bien que les connexions et les mots de passe soient un besoin commun, ils sont souvent gérés de manière à laisser le site Web et ses utilisateurs inutilement plus vulnérables aux attaques de sécurité. En appliquant certaines des meilleures pratiques, vous pouvez mieux protéger votre site et son contenu contre les pirates. Les conséquences d'une mauvaise protection peuvent être graves. Imaginez un site où n'importe quel utilisateur pourrait publier du contenu qui semblait provenir de la société en raison d'une mauvaise gestion des mots de passe, ou un magasin en ligne où tout utilisateur pourrait voir toutes les commandes passées sur le site..
Examinons quelques considérations de sécurité lorsque vous utilisez des noms d'utilisateur et des mots de passe sur vos sites Web..
La connexion se compose d'un nom d'utilisateur qui vous identifie et d'un mot de passe vous confirmant que vous êtes l'utilisateur. Les sites Web permettent souvent à l'utilisateur de spécifier un nom d'utilisateur personnalisé ou d'utiliser l'adresse électronique de l'utilisateur comme nom d'utilisateur..
Les courriels ne changent pas souvent et la plupart des sites Web rassemblent déjà ces informations. Par conséquent, l'utilisateur sera moins susceptible d'oublier son courrier électronique qu'un nom d'utilisateur créé. Le courrier électronique sera également automatiquement unique, car les utilisateurs partagent rarement un compte de messagerie et ceux qui le font ne voudront probablement pas de comptes séparés..
Les inconvénients d'un email incluent le fait que deux personnes qui partagent un email ne peuvent pas avoir de comptes séparés. De plus, si votre site a une raison légitime pour qu'une personne ait plusieurs comptes, cela peut ne pas être possible avec des courriels, mais plus facile à mettre en œuvre en utilisant des noms d'utilisateur. Il est également probable qu'un courrier électronique soit plus facile à pirater puisqu'un utilisateur utilise probablement le même courrier électronique sur tous les sites, mais la majorité des noms d'utilisateur ne sera probablement pas beaucoup plus difficile à pirater, car les utilisateurs ont tendance à réutiliser les noms d'utilisateur autant qu'ils réutilisent les mots de passe..
À moins que vous n'ayez une raison spécifique d'éviter une adresse électronique, préférez l'adresse électronique du nom d'utilisateur de connexion. L'utilisation du courrier électronique est également devenue la norme sur les sites Web. N'oubliez pas cependant de fournir une connexion par courrier électronique avec un moyen de changer le courrier électronique. Sans cette fonctionnalité, un utilisateur devrait créer un nouveau compte et perdre tous les antécédents simplement parce qu'il a changé de fournisseur d'accès à Internet ou s'il a perdu un compte précédent en raison de l'obtention de son diplôme ou d'un changement de travail, entraînant la disparition de son ancien courrier..
Soyez toujours prudent lorsque vous utilisez un e-mail comme identifiant pour ne pas le montrer publiquement, pour des raisons de confidentialité et pour des raisons de prévention du spam..
La page de connexion de votre site Web sera le premier point de recherche d’un pirate informatique. Le pirate tentera de déterminer les comptes valides existant sur un site Web. Si vous gérez correctement la page de connexion, le travail du pirate informatique sera plus difficile. Pour commencer, vous devez minimiser la quantité de données qu'une connexion échouée fournit à un attaquant. Lorsque vous entrez un nom d’utilisateur qui n’est pas reconnu, votre idée initiale pourrait être de fournir un message utile leur demandant de vérifier leur nom d’utilisateur. Vous pouvez fournir une page plus sécurisée en affichant le même message d'erreur lorsque le nom d'utilisateur est introuvable. et lorsque le mot de passe ne correspond pas à celui de l'utilisateur donné. Le message doit indiquer que la combinaison du nom d'utilisateur et du mot de passe n'est pas correcte, afin de permettre à l'utilisateur de vérifier les deux informations, pas seulement l'une ou l'autre..
Si votre site utilise des adresses de messagerie pour le nom d'utilisateur de connexion, un attaquant peut facilement valider si un utilisateur a un compte sur votre service si vous renvoyez un message différent pour une connexion inconnue par rapport à une combinaison échec du nom d'utilisateur et du mot de passe. Cela rend les choses un peu moins pratiques pour l'utilisateur, mais la sécurité supplémentaire est normalement le meilleur compromis.
Comme indiqué précédemment, en supprimant le message spécifique d'un nom d'utilisateur non valide, la sécurité accrue est échangée contre une expérience utilisateur plus dégradée. Fournir un message indiquant qu’un identifiant n’existe pas aidera l’utilisateur à remarquer les fautes de frappe telles que la frappe. John
au lieu de jon
Plus facile. Ce message aide également un utilisateur qui ne se souvient pas du nom d'utilisateur qu'il a utilisé sur votre site. N'oubliez pas que ces types de messages offrent aux pirates un moyen simple et facile de vérifier si un utilisateur existe sur votre site..
Vous pouvez également aider à déjouer un pirate informatique en gérant mieux les tentatives de connexion multiples. Une erreur de frappe accidentelle d'un nom d'utilisateur ou d'un mot de passe plus d'une fois survient assez souvent à partir d'un caractère mal saisi, transposant deux caractères, ou utilisant le mot de passe d'un autre site à la place du mot de passe correct. Autoriser des tentatives de connexion illimitées ouvre la porte à une attaque brutale consistant à essayer à plusieurs reprises des noms d'utilisateur et des mots de passe afin de déterminer la connexion correcte. Des outils et des scripts automatisés accélèrent le processus, permettant ainsi à un pirate informatique de travailler de manière méthodique à travers de nombreux mots de passe potentiels, jusqu'à ce qu'il trouve le bon identifiant.
L'introduction d'un délai croissant après chaque tentative de connexion infructueuse permet également de déjouer les pirates. La première tentative de connexion se produit normalement. La deuxième connexion est retardée d'une fraction de seconde avant de renvoyer le résultat. Les autres tentatives sont retardées de plus en plus longtemps avant de recevoir une réponse. Ce délai minimise les perturbations pour un utilisateur légitime qui a commis une erreur, mais ralentit le pirate informatique qui tente de forcer brutalement le site..
Pour les données plus sensibles, vous pouvez adopter une approche plus ferme en verrouillant le compte après un certain nombre de tentatives infructueuses. Le verrouillage du compte le désactive temporairement ou définitivement. Le lock-out arrête les attaques par force brute, car après un point, la connexion ne fonctionnera pas. Une désactivation temporaire devrait avoir un impact minimal sur l'utilisateur tant qu'un message indiquant le motif du verrouillage est affiché. Un verrouillage permanent oblige l'utilisateur à contacter l'assistance pour résoudre le problème et à mieux adapter les connexions, en protégeant les données importantes..
Les mots de passe sont l'aspect le plus sensible de la connexion. Ne stockez jamais les mots de passe en texte brut. Jamais. Déjà. Cela signifie que presque tous les problèmes de sécurité peuvent exposer les informations de connexion. Même les mots de passe cryptés doivent être évités, car si le pirate informatique accède aux données cryptées, le processus de décryptage peut être beaucoup plus simple. Tout stockage sur lequel vous pouvez récupérer un mot de passe, facilite la tâche d'un pirate informatique..
Les mots de passe doivent être stockés, salés et hachés. Un sel est une valeur unique générée aléatoirement, enregistrée pour chaque connexion et ajoutée avant le hachage. L'ajout du sel empêche les mots de passe identiques d'avoir le même hachage et empêche un pirate informatique de créer à l'avance une liste du résultat de hachage de combinaisons de mots de passe possibles. En ajoutant le hachage aléatoire, un mot de passe de abc123
(veuillez ne jamais utiliser un mot de passe comme celui-ci) donnera un hachage différent pour chaque utilisateur.
Une fonction de hachage transforme le mot de passe en une valeur de longueur fixe. Il existe des fonctions spécialement conçues pour les mots de passe tels que PBKDF2 ou Bcrypt. Les processeurs GPU des cartes graphiques modernes peuvent effectuer les calculs nécessaires au hachage et peuvent Pause beaucoup d'algorithmes faibles rapidement. Les machines dédiées dans le but de casser les mots de passe peuvent déterminer tout mot de passe de huit caractères ou moins, en moins de six heures..
Les utilisateurs ont souvent tendance à réutiliser le même mot de passe pour la plupart des sites sur lesquels ils ont un compte. De nombreux sites ont commencé à tester les informations d'identification exposées provenant de piratages de connexion de compte majeurs à leurs propres connexions et à contacter les utilisateurs dont les combinaisons de nom d'utilisateur et de mot de passe correspondent. Evernote et Facebook ont récemment examiné les informations d'identification de connexion publiées par Adobe et ont alerté les utilisateurs à l'aide de ces mêmes informations d'identification..
Le moyen le plus simple de gérer correctement les mots de passe consiste à utiliser les outils inclus dans votre infrastructure Web. La sécurité des mots de passe est compliquée et ne commettre qu'une erreur peut laisser les mots de passe de vos utilisateurs ouverts aux attaques. pH pass fournit une bibliothèque de domaine public pour PHP utilisant Bcrypt. Les anciens fournisseurs d’adhésion .NET intégrés utilisaient des hachages plus faibles, mais les nouveaux fournisseurs universels utilisaient PBKDF2. Rails fournit également un joyau Bcrypt.
Lorsque vous sécurisez correctement les mots de passe afin qu'ils ne puissent pas être récupérés, vous ne pouvez plus fournir à l'utilisateur un mot de passe oublié. Ensuite, vous devez fournir un moyen alternatif à un utilisateur légitimement oublié de mot de passe pour le réinitialiser de manière sécurisée..
Une bonne page de réinitialisation du mot de passe permet à l'utilisateur de changer le mot de passe sans connaître le mot de passe actuel. La méthode traditionnelle permet à l'utilisateur d'entrer son adresse électronique, puis envoie un lien vers une page Web lui permettant de réinitialiser le mot de passe. L'envoi d'un lien est plus sécurisé que l'envoi d'un mot de passe car le nouveau mot de passe n'est créé que lorsque l'utilisateur accède à la page. L'envoi d'un nouveau mot de passe par courrier électronique créerait une nouvelle information d'identification que toute personne interceptant le courrier électronique pourrait utiliser à l'insu de l'utilisateur. Si quelqu'un intercepte le courrier électronique et réinitialise le mot de passe, l'utilisateur saura quand il accédera et tentera de réinitialiser son mot de passe..
Une bonne page de réinitialisation ne devrait pas non plus permettre de confirmer l’existence d’un compte. La logique est la même que celle dont nous avons discuté en ce qui concerne le fait de ne pas fournir de retour si un compte n’existait pas lors de la connexion. Même si le nom de connexion n’existe pas dans le système. La meilleure approche consiste à envoyer un message indiquant que des instructions ont été envoyées à l'adresse e-mail enregistrée. Vous devez quand même envoyer un courrier électronique au courrier saisi, car il peut être légitime d’oublier quel courrier a été utilisé pour un compte, par exemple en saisissant un courrier électronique professionnel au lieu d’un courrier électronique personnel..
Le lien de réinitialisation des mots de passe doit être conçu de manière à ce que la demande de réinitialisation ait une durée de vie limitée et ne puisse être utilisée qu'une seule fois. Créez un jeton unique pour chaque demande de réinitialisation, lié au compte demandé, puis stockez-le dans une base de données. Ce jeton fait partie de l'URL envoyée par courrier électronique pour réinitialiser le mot de passe. Le jeton doit également se voir attribuer une heure d'expiration et être supprimé une fois la réinitialisation terminée. Si quelqu'un tente d'utiliser un jeton qui a déjà été utilisé ou a expiré, la demande échouera. Le délai d'expiration doit être suffisamment long pour permettre la réception du courrier électronique et permettre à l'utilisateur de terminer l'action, mais pas trop longtemps pour permettre une utilisation ultérieure. Une période de quelques heures suffira généralement.
La réinitialisation d'un mot de passe à l'aide d'un courrier électronique fait également dépendre la sécurité de votre site de l'intégrité du courrier électronique de l'utilisateur. Si le courrier électronique est accessible, cette personne peut réinitialiser le mot de passe. Les sites peuvent ajouter des questions de sécurité auxquelles il faut répondre avant de réinitialiser le mot de passe. Les questions de sécurité apportent peu de sécurité supplémentaire si les réponses sont faciles à trouver. Une question de sécurité de "Quelle est ma ville natale?" fournit peu de sécurité si la réponse peut être trouvée sur le profil Facebook de la personne. Pour plus d'informations sur le développement de bonnes questions, voir http://goodsecurityquestions.com/.
Un identifiant et un mot de passe ne nécessitent qu'une paire d'informations pour accéder à un site Web. Lorsque cette information est fournie, l'utilisateur est supposé être la bonne personne. Pour rendre moins efficace le vol d'informations d'identification, vous pouvez ajouter une deuxième étape au processus d'authentification. En plus de quelque chose que l'utilisateur connaît (le nom d'utilisateur et le mot de passe), l'utilisateur doit également utiliser quelque chose en sa possession actuelle, généralement un téléphone portable via SMS ou une application à cet effet..
Les banques ont probablement été les premières à implémenter ce processus en utilisant du matériel personnalisé pour générer un code dépendant du temps. Dans un deuxième temps, Google a popularisé l'utilisation de SMS ou d'une application. De nombreux sites utilisent maintenant une connexion compatible avec la mise en œuvre de RFC 6238 par Google. Vous pouvez trouver des bibliothèques implémentant déjà cette technique pour les infrastructures les plus courantes telles que ASP.NET, ASP.NET # 2, Ruby on Rails, PHP et Django..
Pour éviter ces problèmes, vous avez une autre option: laissez quelqu'un d'autre gérer tout cela en s'intégrant à un tiers pour une authentification telle que Twitter, Facebook ou OpenID. Cela présente des avantages et des inconvénients. Cela élimine la plupart des problèmes de sécurité dont nous avons discuté ici, car quelqu'un d'autre s'occupe de ces problèmes. Cependant, ces autres sites sont probablement aussi une cible de piratage plus grosse que la vôtre. Si vous utilisez un autre site pour gérer l'authentification, alors si cette connexion est compromise, les pirates ont accès à votre site..
Le recours à un tiers connu peut à la fois aider et nuire du point de vue de la réputation et du point de vue social. L'avantage d'autoriser la connexion avec Facebook ou Twitter est que tant d'utilisateurs possèdent déjà un compte sur ce site et seraient heureux de l'utiliser. D'autres visiteurs peuvent considérer l'intégration avec ces sites comme une fonctionnalité négative et ne pas utiliser votre site à cause de cela ou s'il s'agit de la seule option fournie..
La connexion de votre application Web joue un rôle essentiel dans la sécurisation de votre site. Prendre soin de protéger votre identifiant fera beaucoup pour protéger votre site, les utilisateurs de votre site et leurs informations privées. Pour travailler en toute sécurité avec les identifiants, réduisez au minimum la quantité de données que vos pages de réinitialisation d’identifiant et de mot de passe pourraient potentiellement fournir à un pirate. Mettez également en place des mesures de sécurité pour rendre plus difficile la tâche de deviner les mots de passe de vos utilisateurs par la force brutale.
La protection des mots de passe est une préoccupation essentielle de tout site. Des mots de passe mal protégés facilitent le travail du pirate et peuvent se terminer par les identifiants de connexion de votre site exposés au public. L'utilisation de mots de passe hachés et salés rend le travail du pirate beaucoup plus difficile. De plus, l'ajout de l'option d'une deuxième étape au processus de connexion peut offrir une protection accrue aux utilisateurs de votre site. Vous pouvez également choisir de faire appel à un tiers pour gérer les connexions à votre site..