En savoir plus sur le CSRF
P粉056618053
P粉056618053 2023-10-23 13:57:29
0
2
616

Je ne comprends pas en quoi l'utilisation d'un "challenge token" ajoute une quelconque forme de prévention : quelle valeur comparer à quoi ?

De l'OWASP :

D'une manière générale, les développeurs n'ont besoin que Générez ce jeton une fois Session actuelle. Après initialisation La génération de ce token, dont la valeur est stocké en session et utilisé Pour chaque demande ultérieure, jusqu'à La session a expiré.

Si je comprends bien le processus, voici ce qui se passe.

Je me connecte à http://example.com et crée une session/cookie contenant ce jeton aléatoire. Chaque formulaire contient ensuite une entrée masquée qui contient également une valeur aléatoire de la session, qui est comparée à la session/cookie lors de la soumission du formulaire.

Mais qu’est-ce que cela peut accomplir ? Ne vous contentez-vous pas d'obtenir les données de session, de les insérer dans la page et de les comparer exactement aux mêmes données de session ? Cela ressemble à un raisonnement circulaire. Ces articles continuent de parler du respect d'une "politique de même origine", mais cela n'a aucun sens puisque toutes les attaques CSRF proviennent de l'utilisateur et incitent simplement l'utilisateur à faire quelque chose qu'il n'a pas l'intention de faire.

Existe-t-il d'autres options que l'ajout du jeton en tant que chaîne de requête à chaque URL ? Cela semble très laid et peu pratique, et rend plus difficile la création de favoris pour les utilisateurs.

P粉056618053
P粉056618053

répondre à tous(2)
P粉794851975

CSRF expliqué par analogie - Exemple :

  • Vous ouvrez la porte d'entrée de votre maison avec votre clé.
  • Parlez à vos voisins avant d'entrer
  • Pendant cette conversation, veuillez entrer avec la porte déverrouillée.
  • Ils entrent et se font passer pour vous !
  • Personne dans votre famille ne remarque de différence – votre femme dit : « Oh connard*, il est à la maison ».

L'imposteur a pris tout votre argent et a peut-être joué à la Xbox en sortant...

Résumé

CSRF repose essentiellement sur le fait que vous ouvrez la porte de votre maison et que vous la laissez ensuite ouverte pour que quelqu'un d'autre puisse simplement entrer et se faire passer pour vous.

Comment résoudre ce problème ?

Lorsque vous ouvrirez la porte de votre maison pour la première fois, le portier vous remettra un morceau de papier sur lequel est écrit un chiffre long et très aléatoire :

Maintenant, si vous voulez entrer dans votre maison, vous devez montrer ce morceau de papier au portier pour entrer.

Alorsmaintenantquand un imposteur tente d'entrer dans votre maison, le portier demandera :

"Quel est le nombre aléatoire écrit sur le papier ?"

Si l'imposteur n'a pas les bons numéros, il ne peut pas entrer. Soit il doit deviner correctement le nombre aléatoire - une tâche très difficile. Pour ne rien arranger, le nombre aléatoire n’est valable que 20 minutes (par exemple). Sachez donc que l’imitateur doit deviner correctement, et pas seulement, il n’a que 20 minutes pour obtenir la bonne réponse. C'est tellement fatigant ! Alors il a abandonné.

Bien sûr, cette analogie est un peu tirée par les cheveux, mais j'espère qu'elle aidera.

**crud = (créer, lire, mettre à jour, supprimer)

P粉121081658

L'attaquant ne peut pas obtenir le jeton. La demande ne prendra donc pas effet.

Je recommande cet article de Gnucitizen. Il a une assez bonne explication de CSRF : http://www.gnucitizen.org/blog/csrf-revealed/

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!