Maison  >  Article  >  php教程  >  Défense Yii2.0 contre la méthode d'attaque CSRF

Défense Yii2.0 contre la méthode d'attaque CSRF

黄舟
黄舟original
2017-01-03 09:46:161588parcourir

Dans yii2, que vous utilisiez l'outil de test POSTMAN, la requête CURL en ligne de commande ou la requête ajax, vous obtiendrez toujours l'erreur http400 : Bad Request et si vous utilisez la page Web pour accéder à GET (en supprimant le POST ; restriction de verbFilter), c'est normal.

Après avoir consulté les informations, j'ai trouvé que c'est la raison de la vérification CRSF

Principe :

Cookie Hashing, permettant au serveur marquer une valeur_csrf aléatoire dans tous les formulaires envoyés au client, et en même temps enregistrer un token associé dans le COOKIE du client

Lors de la vérification, le serveur _POST() envoie une entrée _csrf cachée à chaque fois qu'il reçoit ; une requête et le COOKIE du client. Le token est comparé et vérifié

Le principe de l'attaque de l'attaquant est d'utiliser le COOKIE du client, mais l'attaquant ne peut pas obtenir le contenu spécifique du COOKIE qu'il utilise simplement (en laissant de côté. la possibilité d'attaques XSS ici, car les cookies de l'utilisateur sont facilement volés en raison des vulnérabilités XSS du site Web, ce qui représente 1 % supplémentaire. Généralement, les attaquants abandonnent lorsqu'ils voient la nécessité de calculer les valeurs de hachage ; ajoutez des jetons à l'URL d'attaque, donc la vérification échoue.

C'est peut-être la solution la plus simple, car l'attaquant ne peut pas obtenir de cookies tiers (théoriquement), donc les données du formulaire ne parviennent pas à être construites

Solution :

1.禁用CRSF验证(不推荐):'enableCsrfValidation' => false,

'components' => [
'request' => [
'cookieValidationKey' => '83r5HbITBiMfmiYPOZFdL-raVp4O1VV4',
'enableCookieValidation' => false,
'enableCsrfValidation' => false,
]

2. Lors de la soumission des données, transportez les informations csrf

a. Lors de l'appel du composant ActiveForm, les données soumises apporteront automatiquement _csrf

b. csrf dans l'en-tête (comme indiqué ci-dessous) et soumettez-les avec les données à soumettre

Défense Yii2.0 contre la méthode dattaque CSRF

c Vous pouvez également obtenir les informations csrf via php

Yii::$app->request->csrfParam;(获取csrf-param)
Yii::$app->request->csrfToken;(获取csrf-token)

Ce qui précède est le contenu de la défense Yii2.0 contre les attaques CSRF. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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