Fermer

avril 16, 2019

Authentification dans les applications frontend


Quelle que soit la portée de votre application, même s'il s'agit d'une application à page unique, la protection des données de l'utilisateur est essentielle. Découvrez les meilleurs moyens de sécuriser les données des utilisateurs.

Le Web a beaucoup changé. De nombreux processus généralement effectués sur le serveur ont été déplacés du côté client. L'un d'eux est l'authentification.

Auparavant, les serveurs géraient et stockaient les sessions utilisateur, ce qui sécurisait l'essentiel du processus d'authentification.

Maintenant que la plupart de ces opérations ont été transférées du côté client, où les informations étant facilement accessibles et exploitables sur des API sans état, il est important que nous continuions à adopter les meilleures pratiques et à éviter les vulnérabilités afin de garantir la sécurité de notre application.

Fonctionnement de l'authentification de site Web

La protection des informations de l'utilisateur doit toujours être préservée. priorité absolue, quels que soient l'étendue ou la taille de l'application.

Les applications de page unique (SPA) sont souvent liées à des API, et ces API, sous la forme de points d'extrémité, aident à fournir des données qui peuvent être manipulées dans la logique de celles-ci. applications. Certaines des données fournies par les API sont sensibles. Par conséquent, une certaine forme d'authentification doit être mise en place avant de pouvoir y accéder.

Le serveur qui héberge toutes les données reçoit les informations d'identification de l'utilisateur soumises de l'application frontale, les authentifie et les renvoie. réponse appropriée.

Les solutions les plus connues aux problèmes d’authentification sont les spécifications OAuth 2.0 et JSON Web Token (JWT). Les JWT vous offrent un moyen structuré de déclarer qui est un utilisateur et à quoi il peut accéder. Ils peuvent également être cryptés et signés pour vérification. Les JWT prennent la forme suivante: header.payload.signature

Authentification contre autorisation

L'authentification est parfois confondue avec l'autorisation, mais elles sont assez différentes. Avec l'authentification, vous essayez d'identifier l'utilisateur avec les informations d'identification que vous avez reçues, tandis que l'autorisation détermine si cet utilisateur identifié doit avoir accès à une ressource particulière ou non.

Problèmes de sécurité courants avec les applications frontales

  1. Vulnérabilités dans les API utilisées : Parfois, les vulnérabilités proviennent de la manière dont les API sont conçues pour traiter et renvoyer les données. Les API que vous avez spécialement conçues pour votre application peuvent être améliorées et une authentification correcte, mais le plus souvent, l'utilisation d'API tierces est requise. Avec moins de contrôle sur la sécurité de ces API publiques, votre application peut rester vulnérable.
  2. Attaques de type Cross Site Scripting (XSS): Cela se produit généralement lorsqu'une application vulnérable autorise l'injection de code JavaScript externe ou indésirable et exécuté sur la page. Contournement de demande inter-sites (CSRF): Cela se produit généralement lorsqu'un site Web malveillant force le navigateur Web d'un utilisateur à exécuter une action non souhaitée sur un site de confiance pour lequel l'utilisateur est actuellement authentifié. (c.-à-d. un site Web malveillant exécutant des opérations pour lesquelles vous ne l'avez pas autorisé.)

Ce qu'il faut faire

Lors de la création d'applications frontales, beaucoup de choses sont considérées comme les meilleures pratiques pour rendre vos applications aussi sécurisées que possible. Toutes ces solutions n'éliminent pas complètement le problème, mais elles constituent un pas en avant important pour une application plus sécurisée.

1. Tout HTTPS avec SSL

SSL signifie Secure Sockets Layer et sert à chiffrer les données transférées sur Internet. Ce cryptage permet à vos visiteurs de naviguer sur votre site web avec une connexion sécurisée. Le protocole SSL protège les informations personnelles, telles que les numéros de téléphone, les adresses, les noms et les informations de carte de crédit lors du transfert.

Cette fonctionnalité était coûteuse à mettre en œuvre, mais nous avons maintenant des fournisseurs qui offrent des certificats SSL gratuits tels que Let's Encrypt.

À partir de la sécurisation de votre site Web, un certificat SSL rend votre site digne de confiance: tout visiteur qui voit que votre site est protégé avec le "https" aura toute confiance en ses informations et son utilisation de votre application.

Keep Tokens Safe

En utilisant JWT, vous recevez un jeton du serveur qui peut être utilisé pour les demandes suivantes. Le défi consiste à choisir le meilleur moyen de stocker ce jeton.

Le navigateur propose différentes méthodes pour stocker les données, mais chacune comporte ses propres vulnérabilités.

Web Storage: Il est courant de stocker un fichier. Jeton dans window.localStorage afin qu'il puisse être facilement récupéré lors d'une requête d'API, mais il n'a jamais été conçu pour être sécurisé.

 window.localStorage.setItem ('token', tokenReturned)

Bien qu'il soit immunisé contre le CSRF, il est vulnérable au XSS. Étant donné que les charges / revendications JWT peuvent en réalité être lues sans la clé privée (secrète), son stockage dans localStorage n’est pas sécurisé.

Cookies HTTP: Un cookie HTTP est une petite donnée, généralement pas. plus de 4 Ko qu'un serveur envoie au navigateur Web de l'utilisateur. Les données peuvent être stockées de manière plus sécurisée ici, en particulier dans les modes Sécurisé et HttpOnly .

Les cookies HTTP sont immunisés contre XSS mais vulnérables contre les CSRF.

 set-cookie: Expires = dimanche, 16 septembre 2018 17:43:00 GMT; Garantir; HttpOnly

L'indicateur Secure garantit que le navigateur envoie le cookie uniquement via une connexion HTTP.

L'indicateur httpOnly empêche la lecture de tout code JavaScript.

3 Utilisation des en-têtes de sécurité

Comme indiqué ci-dessus, le script intersite (XSS) est l'une des principales vulnérabilités des applications Web. Heureusement, les navigateurs offrent et implémentent de nombreuses fonctionnalités pour aider à le prévenir. Cela implique l'utilisation d'en-têtes de sécurité tels que CSP, SRI, HSTS ou HPKP.

Politique de sécurité du contenu (CSP): Un Un CSP décrit une série de règles demandant au navigateur de: autorisez ou bloquez le chargement et l'exécution de ressources en spécifiant les domaines que le navigateur doit considérer comme des sources valides de scripts exécutables.

Intégrité de la sous-source (SRI): L'utilisation de SRI permet aux navigateurs de vérifier que les fichiers fetch (par exemple, à partir d'un CDN) sont livrés sans manipulation inattendue.

Sécurité HSTS (HTTP Strict Transport): La sécurité HTTP Strict Transport est un autre en-tête de réponse HTTP qui indique au navigateur qu'elle doit uniquement autoriser les requêtes HTTPS sur toutes les requêtes suivantes.

Identifier la clé publique HTTP (HPKP): L'en-tête permet de demander au navigateur de vérifier un ensemble de clés publiques cryptographiques données par rapport au site Web demandeur. [19659003] Cookies HTTP: Vous en avez déjà parlé, mais il est étrange de laisser ce champ vide

4. Utiliser les contrôles d'accès

Comme mentionné ci-dessus, un moyen plus sûr de stocker les jetons consiste à utiliser les cookies HTTP, mais cela vous ouvre également la voie à CSRF. Une attaque CSRF peut être évitée en utilisant des requêtes non simples.

Pour comprendre cela, examinons CORS.

CORS signifie Cross-Origin Resource Sharing et est un mécanisme qui utilise des en-têtes HTTP supplémentaires pour se défendre. une origine (domaine) d'accéder à des données d'une autre origine. Une requête non simple déclenche un «contrôle en amont CORS» et empêche l'accès aux données.

Conclusion

Il est très important que chaque développeur, en particulier lors de la construction d'applications frontales d'une seule page, soit conscient des vulnérabilités de sécurité possibles. Comment minimiser les risques d'attaque.

L'authentification dans les différentes applications varie, car différentes applications ont des flux et des exigences différentes, mais la nécessité de veiller à la sécurité est universelle.


Les commentaires sont désactivés en mode Aperçu.




Source link