"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comprendre et prévenir la falsification de requêtes intersites (CSRF) en JavaScript

Comprendre et prévenir la falsification de requêtes intersites (CSRF) en JavaScript

Publié le 2024-11-08
Parcourir:196

Understanding and Preventing Cross-Site Request Forgery (CSRF) in JavaScript

Introduction

Dans le paysage en constante évolution de la sécurité Web, la falsification de requêtes intersites (CSRF) reste une menace critique à laquelle les développeurs doivent répondre pour garantir l'intégrité et la sécurité des applications Web. Dans cet article de blog, nous expliquerons ce qu'est CSRF, comment il peut affecter vos applications et fournirons des solutions pratiques pour empêcher les attaques CSRF utilisant JavaScript. À la fin, vous aurez une solide compréhension de CSRF et de la façon de protéger vos applications contre cette vulnérabilité de sécurité courante.

Qu’est-ce que le CSRF ?

Cross-Site Request Forgery (CSRF) est un type d'attaque qui incite un utilisateur à effectuer des actions sur une application Web dans laquelle il est authentifié. Contrairement au Cross-Site Scripting (XSS), qui exploite la confiance de l'utilisateur dans un site Web particulier, CSRF exploite la confiance du site Web dans le navigateur de l'utilisateur.

Comment fonctionnent les attaques CSRF

Les attaques CSRF impliquent généralement trois étapes principales :

1. Authentification de la victime : La victime se connecte à un site Web légitime (par exemple, sa banque).

2. Requête malveillante : L'attaquant incite la victime à visiter un site malveillant qui envoie une demande au site légitime au nom de la victime.

3. Exécution : Le site légitime traite la demande car elle semble provenir de l'utilisateur authentifié, ce qui entraîne des actions indésirables telles que le transfert de fonds ou la modification des détails du compte.

Exemple d'attaque CSRF

Prenons un scénario dans lequel le site Web d'une banque autorise les transferts d'argent via une simple requête GET :

Click here to win $1000!

Si la victime clique sur ce lien alors qu'elle est connectée à son compte bancaire, le transfert sera exécuté sans son consentement.

Prévenir les attaques CSRF

Pour prévenir les attaques CSRF, les développeurs peuvent mettre en œuvre plusieurs stratégies :

1. Modèle de jeton de synchronisation (jetons CSRF)
2. Cookies du même site
3. Cookie de double soumission

1. Modèle de jeton de synchronisation (jetons CSRF)

L'une des méthodes les plus efficaces pour prévenir les attaques CSRF consiste à utiliser des jetons CSRF. Un jeton CSRF est une valeur unique, secrète et imprévisible générée par le serveur et envoyée au client. Ce jeton doit être inclus dans toute demande de changement d'état effectuée par le client.

Mise en œuvre étape par étape :

1. Générer un jeton CSRF :

const generateCSRFToken = () => {
    return crypto.randomBytes(24).toString('hex');
};

2. Envoyer le jeton CSRF au client :

Dans votre formulaire HTML, incluez le jeton CSRF comme champ masqué :

3. Validez le jeton CSRF sur le serveur :
Côté serveur, validez le jeton pour chaque demande de changement d'état :

const validateCSRFToken = (req, res, next) => {
    const token = req.body.csrf_token;
    if (token === req.session.csrfToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

2. Cookies du même site

L'attribut SameSite pour les cookies peut atténuer les attaques CSRF en contrôlant la manière dont les cookies sont envoyés avec les requêtes intersites.

res.cookie('session', 'value', { sameSite: 'Strict' });

3. Cookie de double soumission

La méthode de cookie à double soumission implique l'envoi du jeton CSRF à la fois en tant que cookie et paramètre de demande.

Mise en œuvre étape par étape :

1. Définir le jeton CSRF comme cookie :

res.cookie('csrfToken', csrfToken, { httpOnly: true });

** Inclure le jeton dans les demandes : **

** 3. Validez le Token sur le Serveur : **

const validateCSRFToken = (req, res, next) => {
    const token = req.cookies.csrfToken;
    const bodyToken = req.body.csrf_token;
    if (token && token === bodyToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

Conclusion

Cross-Site Request Forgery (CSRF) est une menace sérieuse qui peut compromettre la sécurité de vos applications Web. En comprenant le fonctionnement des attaques CSRF et en mettant en œuvre des techniques de prévention robustes telles que les jetons CSRF, les cookies SameSite et les cookies à double soumission, vous pouvez protéger vos applications et vos utilisateurs contre cette vulnérabilité courante. Donnez toujours la priorité aux meilleures pratiques de sécurité dans votre processus de développement pour garantir une expérience utilisateur sûre et sécurisée.

Mettez en œuvre dès aujourd'hui ces techniques de prévention CSRF dans vos applications JavaScript et protégez les données de vos utilisateurs. Partagez vos réflexions et expériences dans les commentaires ci-dessous. N'oubliez pas de suivre pour plus de trucs et astuces sur la sécurité Web !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/rigalpatel001/understanding-and-preventing-cross-site-request-forgery-csrf-in-javascript-2ne0?1 En cas de violation, veuillez contacter study_golang@163 .com pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3