Protection CSRF avec la SCRO-tête d'Origine vs jeton CSRF
Cette question est au sujet de la protection contre les Cross Site Request Forgery attaques seulement.
C'est en particulier sur: la protection par l'Origine de l'en-tête (SCRO) aussi bon que la protection par l'intermédiaire d'un jeton CSRF?
Exemple:
- Alice est connecté (à l'aide d'un cookie) avec son navigateur pour "https://example.com". Je suppose, qu'elle utilise un navigateur moderne.
- Alice visites "https://evil.com", et evil.com s'côté client code effectue une sorte de demande de "https://example.com" (classique CSRF scénario).
Donc:
- Si nous n'avons pas à vérifier l'Origine de l'en-tête (côté serveur), et aucun jeton CSRF, nous avons une CSRF trou de sécurité.
- Si l'on contrôle un jeton CSRF, nous sommes sûr (mais c'est un peu fastidieux).
- Si nous ne vérifier l'en-tête d'Origine, la demande de evil.com s'côté client code doit être bloqué juste comme bien comme il le ferait lors de l'utilisation d'un jeton CSRF - sauf, si c'est possible en quelque sorte pour evil.com le code pour définir l'en-tête d'Origine.
Je sais, que cela ne devrait pas être possible avec XHR (voir, par exemple,De sécurité pour le cross-origin resource sharing), au moins pas, si nous avons confiance que le W3C spec être correctement mis en œuvre dans tous les navigateurs modernes (peut-on?)
Mais que sur d'autres types de demandes - par exemple, soumettre? Chargement d'un script/img/tag...? Ou de toute autre manière une page peuvent utiliser (légalement) de créer une demande? Ou peut-être que certains connus JS hack?
Note: je ne parle pas
- applications natives,
- manipulé les navigateurs,
- cross site scripting de bugs dans example.com's page,
- ...
- Je crois que beaucoup de procurations de bande de l'en-tête d'origine.
- Et pour soumettre le formulaire et img/balises de script, nous devrions compter sur les Dsp, vous ne savez pas sur les vieux navigateurs bien.
- Depuis que la connexion est initiée sur TLS l'utilisateur dispose d'un beaucoup plus urgent que CSRF si un proxy peut man-in-the-middle lui/elle.
- Il a également ne peut pas faire de mal à utiliser les deux. Ils ne s'influencent les uns les autres.
- Je crois que cette question appartient à security.stackexchange.com
- pourquoi auraient-ils bande
Origin
? Qui irait à l'encontre de la protection de la SCRO. - J'aime cette question et ses réponses parce qu'ils sont sur quelque chose de spécifique, mais ils ont aussi de me rappeler la différence entre CSRF et de la SCRO. (J'avoue que ceux qui sont pas facilement être confondus concepts... Mais j'ai encore réussi à les confondre.)
Vous devez vous connecter pour publier un commentaire.
À la fin de la journée vous avez de "confiance" le navigateur client pour stocker en toute sécurité les données de l'utilisateur et de protéger le côté client de la session. Si vous n'avez pas confiance dans le navigateur du client, alors vous devez cesser d'utiliser le web à tous pour autre chose que du contenu statique. Même avec l'aide de jetons CSRF, vous êtes confiant le navigateur client correctement obéir à la Même La Politique De L'Origine.
Alors qu'il y a eu auparavant des vulnérabilités du navigateur, tels que ceux dans IE 5.5/6.0 où il a été possible pour les pirates pour contourner la Même Origine et exécuter des attaques, vous pouvez généralement s'attendre à ces être corrigée dès que découvert et avec la plupart des navigateurs automatiquement la mise à jour, ce risque sera principalement atténués.
La
Origin
en-tête est normalement envoyées uniquement pour XHR des requêtes inter-domaine. Image demandes de ne pas contenir l'en-tête.Je ne suis pas sûr de savoir si cela relève de manipulé les navigateurs ou pas, mais les anciennes versions de Flash permis arbitraire des en-têtes set qui permettrait à un attaquant d'envoyer une demande avec une fausse
referer
en-tête de la machine de la victime dans le but d'exécuter une attaque.crossdomain.xml
qui peut permettre les communications inter-domaines.Contenu Web ne peut pas falsifier les en-tête d'Origine. En outre, en vertu de la même origine, une origine, ne peut même pas envoyer des en-têtes personnalisés à d'autres origines. [1]
Ainsi, la vérification de l'en-tête d'Origine est tout aussi bon à blocage des attaques que l'utilisation d'un jeton CSRF.
La principale préoccupation en s'appuyant sur ce qui est de savoir si elle permet à toutes les demandes légitimes de travail. La personne sait à propos de cette question, et a mis en place la question d'exclure l'une des causes majeures (pas de vieux navigateurs, HTTPS uniquement).
Fournisseurs de navigateur suivez ces règles, mais ce que les plugins? Ils ne pourraient pas, mais la question méprise "manipulé les navigateurs." Ce sujet des bugs dans le navigateur qui permettent à un attaquant de forger l'en-tête d'Origine? Il peut y avoir des bugs qui permettent le jeton CSRF de fuite à travers les origines de trop, alors qu'il faudrait plus de travail à faire valoir que l'une est meilleure que l'autre.