Maison  >  Article  >  développement back-end  >  Une introduction à la méthode Tornado pour prévenir les attaques intersites en Python

Une introduction à la méthode Tornado pour prévenir les attaques intersites en Python

不言
不言avant
2018-10-20 15:28:331947parcourir

Cet article vous présente la méthode de Tornado pour prévenir les attaques intersites en Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

La falsification de requêtes intersites (CSRF ou XSRF) est une utilisation malveillante d'un site Web. Grâce à CSRF, les attaquants peuvent usurper l'identité de l'utilisateur et effectuer des opérations malveillantes à l'insu de l'utilisateur.

1. Principe d'attaque CSRF

La figure suivante montre le principe de base du CSRF. Site1 est un site Web présentant des vulnérabilités CSRF et SIte2 est un site Web malveillant comportant des attaques.

Une introduction à la méthode Tornado pour prévenir les attaques intersites en Python
Le contenu de l'image ci-dessus est analysé comme suit :

  • L'utilisateur a visité pour la première fois le Site1, un site Web présentant des vulnérabilités CSRF, et s'est connecté avec succès et les cookies obtenus. Après cela, toute la visite de l'utilisateur sur Site1 portera le cookie de Site1, elle est donc considérée comme une opération valide par Site1.

  • À ce moment-là, l'utilisateur a visité le Site2, un site au comportement offensant, et la page de retour du Site2 contenait un lien pour visiter le Site1 pour des opérations malveillantes, mais il était déguisé en contenu légitime , par exemple, le lien hypertexte suivant ressemble à une information de loterie, mais il souhaite en réalité soumettre une demande de retrait au site Site1

<a>
三百万元抽奖,免费拿
</a>
  • Une fois que l'utilisateur clique sur le lien malveillant, et envoie une requête au site Site1 sans le savoir. Étant donné que l'utilisateur s'est déjà connecté au Site1 et ne s'est pas déconnecté, lorsque le Site1 reçoit la demande de l'utilisateur et le cookie qui l'accompagne, il considérera la demande comme une demande normale envoyée par l'utilisateur. À ce stade, l’objectif du site malveillant a été atteint.

2. Utilisez Tornado pour empêcher les attaques CSRF

Afin d'empêcher les attaques CSRF, chaque requête doit inclure une valeur de paramètre en tant que valeur de paramètre. stockage correspondant pour le jeton La valeur correspondante dans le cookie.

Les applications Tornado peuvent fournir des jetons à la page via un en-tête de cookie et un élément de formulaire HTML caché. De cette façon, lorsque le formulaire d'une page légitime est soumis, il inclura les valeurs du formulaire et les cookies stockés. Si les deux correspondent, la demande d’approbation de la demande Tornado est valide.

L'activation de la fonction de prévention CSRF de Tornado nécessite deux étapes.

[1] Passer le paramètre xsrf_cookies=True lors de l'instanciation de tornado.web.Application, soit :

application=tornado.web.Application([
(r'/',MainHandler),
],
cookie_secret='DONT_LEAK_SECRET',
xsrf_cookies=True,
)

ou :

settings={
"cookie_secret":"DONT_LEAK_SECRET",
"xsrf_cookies":True
}

application=tornado.web.Application([
(r'/',MainHandler),
],**settings)

lors de tornade. Lorsque web.Application doit initialiser trop de paramètres, vous pouvez transmettre des paramètres nommés sous la forme d'un dictionnaire de paramètres comme cet exemple

[2] Dans chaque fichier modèle avec expression HTML, ajoutez la balise de fonction xsrf_form_html() , tels que :


{% module xsrf_form_html() %}

Le {% module xsrf_form_html() %} joue ici le rôle d'ajouter des éléments cachés au formulaire pour empêcher les requêtes cross-sites.

La prise en charge sécurisée des cookies et le cadre de prévention XSRF réduisent considérablement la charge des développeurs d'applications. Sans eux, les développeurs doivent réfléchir à de nombreuses mesures de prévention détaillées, les fonctionnalités de sécurité intégrées de Tornado sont donc également très utiles.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer