Maison > php教程 > PHP开发 > le corps du texte

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

黄舟
Libérer: 2017-01-03 09:46:16
original
1587 Les gens l'ont consulté

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,
]
Copier après la connexion

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)
Copier après la connexion

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) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal