Les nonces sont-ils inutiles?

11

C'est probablement une question de NOOB MAIS écoutez-moi - n'est-il pas utile d'utiliser Nonce pour se protéger contre des choses comme les scrappers (phpcurl scrappers etc.)? Mais mon Nonce s'imprime dans la tête du document comme suit:

/* <![CDATA[ */
var nc_ajax_getpost = {
    ...stuff...
    getpostNonce: "8a3318a44c"
};
/* ]]> */

Donc, si je construisais un scrapper rapide, j'obtiendrais simplement la valeur nonce de cette page et l'utiliserais ensuite dans mon POST ... rendant inutile tout l'exercice d'utilisation d'un Nonce ...

Qu'est-ce que j'oublie ici?

Adrian
la source
2
Les nonces n'ont rien à voir avec le raclage de contenu, d'où vous est venue cette idée? ..
Rarst
K alors permettez-moi d'utiliser un exemple banal alors. Le nonce est utilisé pour empêcher une attaque liée à la sécurité ... l'attaquant peut toujours obtenir le nonce du site Web car il est affiché publiquement ... wtf?
Adrian
1
Il serait probablement judicieux pour vous de reformuler cela en une question plus générique sur le nonce. Beaucoup trop pour les commentaires et votre formulation initiale sur le grattage ne s'applique pas.
Rarst

Réponses:

16

Les nonces sont uniques à chaque utilisateur connecté. Vous ne pouvez pas gratter les nonces d'un utilisateur connecté à moins d'avoir ses cookies. Mais si vous avez des cookies d'un utilisateur, vous avez déjà volé son identité et pouvez faire ce que vous voulez.

Les nonces sont destinés à protéger les utilisateurs contre les tromperies pour qu'ils fassent quelque chose qu'ils ne voulaient pas faire, en cliquant sur un lien ou en soumettant un formulaire. C'est donc eux-mêmes qui exécutent cette action (involontairement), pas l'attaquant.

scribu
la source
2

http://en.wikipedia.org/wiki/Cryptographic_nonce

"Dans l'ingénierie de sécurité, nonce est un nombre arbitraire utilisé une seule fois pour signer une communication cryptographique. ... C'est souvent un protocole d'authentification aléatoire ... pour garantir que les anciennes communications ne peuvent pas être réutilisées dans des attaques par rejeu."

L'idée est d'arrêter la soumission de données répétées. Vous créez un identifiant unique à usage unique qui vous est personnel, de sorte que lorsque vous soumettez des données, cela ne peut être fait qu'une seule fois. Cela n'a rien à voir avec la navigation sur votre site. C'est ce que fait le scraping du site. Comment feriez-vous la différence entre un robot de grattage et un robot de chalutage (comme Google)?

TCBarrett
la source
9
Je dois noter que (confusément) les nonces WordPress peuvent être utilisés plus d'une fois très bien. Donc, cela n'a rien à voir avec la soumission répétée non plus, il s'agit de vérifier l'intention d'un utilisateur spécifique faisant une action spécifique vers un objet spécifique.
Rarst
3
@Rarst - excellent point sur la réutilisation nonce, et tristement les commentaires dans le code source et le codex lui-même indiquent qu'il s'agit d'une clé à usage unique. codex.wordpress.org/Function_Reference/wp_create_nonce - Qui craint lorsque vous développez une fonctionnalité en supposant que ces nombres ne valideront pas plus d'une fois . :(
Marcus Pope