¿Puedo usar el mismo nonce para múltiples solicitudes en la misma página?

12

¿O esto rompe el propósito del nonce, que admito que no lo entiendo muy bien? :)

Por ejemplo, en dos solicitudes ajax que se ejecutan en la carga de la página, o cuando se hace clic en algo:

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });

 $.ajax({
   type: 'post',
   url: 'admin-ajax.php',
   data: { action: 'foo2',
           _ajax_nonce: '<?php echo $nonce; ?>' }
 });
    
pregunta Alex 27.12.2011 - 17:38

2 respuestas

4

La función de creación de WordPress nonce se debe llamar solo en el init hook:

  

Utilice el inicio o cualquier acción subsiguiente para llamar a esta función. Vocación   fuera de una acción puede llevar a problemas. Consulte # 14024 para obtener más información.

Dado que init hook "se ejecuta después de que WordPress haya terminado de cargarse, pero antes de que se envíen los encabezados", se crean nonces en cada solicitud de página completa (no en una solicitud ajax). Así que, técnicamente, puede utilizar el mismo nonce en varias solicitudes, pero debe hacerlas únicas en cada solicitud , como han señalado otras respuestas.

Para arrojar más luz sobre lo que son los nonces:

Nonces se envían en cada solicitud de Ajax como un token de seguridad, para garantizar que la solicitud fue dirigida por el usuario.

    
respondido por el Naoise Golden 27.12.2011 - 19:00
9

Sí, los nonces son altamente confusos. :)

Si bien el concepto de nonce implica que solo se usa una vez, WordPress no lo aplica y técnicamente se puede usar el nonce varias veces.

Sin embargo, dado que nonce se usa para verificar la intención (como en el caso en el que realmente pretendía realizar una acción específica), las diferentes acciones deben tener diferentes nonces generados y verificados.

    
respondido por el Rarst 27.12.2011 - 19:22

Lea otras preguntas en las etiquetas