Maison  >  Article  >  interface Web  >  Qu’est-ce que le CSRF ? Les dangers du CSRF et comment s’en défendre

Qu’est-ce que le CSRF ? Les dangers du CSRF et comment s’en défendre

不言
不言original
2018-09-19 15:25:5510537parcourir

Le contenu de cet article porte sur qu'est-ce que le CSRF ? Les dangers du CSRF et des méthodes de défense ont une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

Qu'est-ce que le CSRF

Avant de comprendre le CSRF, nous devons vulgariser deux prérequis. Tout d’abord, il existe de nombreuses façons de vérifier les autorisations de connexion. Actuellement, la plupart des sites Web utilisent. mode tâche de session. En termes simples, le mécanisme de session est que le serveur utilise une paire clé-valeur pour enregistrer les informations de connexion, et en même temps, la session est stockée dans le cookie. L'identifiant (la clé que nous venons de mentionner) est stocké dans le cookie. De plus, nous savons également que les requêtes HTTP(s) dans le navigateur modifieront automatiquement les cookies pour nous. Transmis au serveur. De cette manière, l'identifiant de session est obtenu via le cookie lors de chaque demande, puis les informations de connexion sont obtenues du serveur via celui-ci pour compléter la vérification des autorisations de l'utilisateur.

C'est aussi une fonctionnalité intéressante. Mais à cause de Les cookies sont vraiment ouverts. Si un utilisateur se connecte au site Web A, si l'utilisateur envoie un cookie A lors de la visite du site Web B, Demande de site Web, cette demande contient en fait les informations de connexion de l'utilisateur sur le site Web A. Si A à la station B à ce moment Si la demande du site Web est inconnue de l'utilisateur, cela constitue un préjudice très grave. Le processus ci-dessus est une attaque de requête intersite, c'est-à-dire une contrefaçon de requête intersite, c'est-à-dire CSRF.

Dangers du CSRF

Un bref résumé des vulnérabilités CSRF consiste à utiliser les vulnérabilités dans la vérification des autorisations de sites Web pour envoyer des demandes à l'insu de l'utilisateur afin de « déguiser » l'objectif de l'utilisateur. . Les principaux types d'attaques mises en œuvre par les attaquants utilisant CSRF sont les suivants :

L'attaquant peut tromper l'utilisateur victime pour qu'il effectue toute opération de changement de statut autorisée par la victime, telle que : mettre à jour les détails du compte, terminer ses achats, se déconnecter. , et même la connexion et d'autres opérations

obtenir les données privées des utilisateurs

Coopérer avec d'autres attaques de vulnérabilité

Ver CSRF

parmi eux Le ver CSRF, comme son nom l'indique, produit un effet de ver et va L'attaque s'étend de un à dix et de dix à cent. Par exemple, l'interface permettant d'envoyer des messages privés aux amis d'une communauté et l'interface permettant d'obtenir la liste d'amis présentent toutes deux des vulnérabilités CSRF. Un attaquant peut les combiner en un ver CSRF : lorsqu'un utilisateur visite une page malveillante, il obtient les informations de sa liste d'amis via. CSRF, puis utilise la vulnérabilité CSRF des amis de messagerie privée envoie un message pointant vers une page malveillante à chaque ami. Tant que quelqu'un consulte le lien dans ce message, le ver CSRF continuera à se propager, ainsi que les dommages et l'impact qu'il peut avoir. parce que c'est énorme !

Méthodes de défense

D'après la description ci-dessus, nous pouvons savoir que CSRF a deux caractéristiques : la fonction de transport automatique des cookies et les attaques intersites. Les solutions suivantes peuvent alors être utilisées pour ces deux fonctionnalités.

Vérifiez le champ Referer

Tout le monde sait qu'il y a un champ Referer dans l'en-tête HTTP. Ce champ sert à indiquer l'adresse d'où provient la requête. En vérifiant ce champ de la demande sur le site Internet, nous pouvons savoir si la demande est émise depuis ce site. Nous pouvons rejeter toutes les demandes non émises par ce site, évitant ainsi les caractéristiques cross-sites du CSRF.

const { parse } = require('url');module.exports = class extends think.Logic {
  indexAction() {
    const referrer = this.ctx.referrer();
    const {host: referrerHost} = parse(referrer);
    if(referrerHost !== 'xxx') {
        return this.fail('REFERRER_ERROR');
    }
  }}

En prenant également ThinkJS comme exemple, il suffit de faire un simple jugement en Logic. Cette méthode profite du fait que le client ne peut pas construire de référent. Bien qu'elle soit simple, elle deviendra très gênante lorsque le site Web a plusieurs noms de domaine ou que les noms de domaine sont fréquemment modifiés, et elle présente également certaines limitations.

Vérification des jetons

Étant donné que CSRF profite de la capacité du navigateur à transmettre automatiquement les cookies, une autre idée de défense consiste à ne pas transmettre les informations de vérification via les cookies et à ajouter des chaînes cryptées aléatoires à d'autres paramètres pour vérification . test. Il existe deux méthodes ici :

Chaîne aléatoire : ajoutez un paramètre de chaîne aléatoire à chaque soumission. Le paramètre est envoyé par le serveur via la page. Il est ajouté au paramètre de soumission à chaque fois qu'il est demandé. passes Vérifiez si les paramètres sont cohérents pour déterminer s'il s'agit d'une demande utilisateur. Étant donné que l'attaquant lors d'une attaque CSRF n'a aucun moyen de connaître à l'avance la valeur de la chaîne aléatoire, le serveur peut rejeter la demande en vérifiant la valeur.

JWT : En fait, sauf En plus de la connexion à la session, la vérification de la connexion par jeton JWT devient de plus en plus populaire. Cette méthode consiste à enregistrer le jeton de connexion sur le front-end et à le transmettre dans l'en-tête à chaque fois qu'une demande est effectuée. Le processus de vérification de connexion est implémenté en ajoutant un en-tête d'authentification. Étant donné que l'attaquant ne peut pas connaître la valeur du jeton lors d'une attaque CSRF, les attaques CSRF peuvent également être évitées de cette manière. certainement En plus de JWT, les méthodes de connexion par jeton incluent OAuth et de nombreuses autres méthodes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn