2015-07-31 15 views
8

Stavo cercando di capire dove WordPress memorizza tutti i nonces. Ma non è stato in grado di trovare un indizio. Per prima cosa ho controllato il database ma non sono riuscito a trovare nessuna tabella chiamata qualcosa come wp_nonces.Dove vengono memorizzati gli eventi di WordPress?

+4

Per chi non conosce nonces: [ «Un nonce è un numero ** ** utilizzato una sola volta per aiutare a proteggere gli URL e forme da determinati tipi di uso improprio, malevolo o altro. WordPress ** nonces non sono numeri, ma sono un hash ** composto da numeri e lettere »] (https://codex.wordpress.org/WordPress_Nonces). – Armfoot

risposta

6

Ho postato questa domanda 11 mesi fa.

Tutte le risposte che ho ricevuto sono state fantastiche e mi hanno aiutato molto.

Ma nessuno di questi ha indirizzato il percorso di archiviazione di WordPress. Questa è la mia vera domanda.

Quindi, ho individuato il codice sorgente di WordPress ed è stato in grado di trovare il percorso di archiviazione corretto di WordPress.

Sono memorizzati nelle sessioni utente.

Sono token unici memorizzati nella sessione dell'utente. I nonces hanno una durata di vita definita.

Se l'utente si disconnette da WordPress, i nonces non saranno più validi.

PS: Ho fatto questa domanda ed ora sto inviando questa risposta per aiutare gli altri :)

0

Nonces sono i token one-time generati da WordPress per convalidare le varie richieste, come ad esempio l'aggiunta di un commento, l'eliminazione di un post, la rimozione di un utente, ecc

Non sono memorizzati da nessuna parte, né hanno bisogno di essere.

Prendete il seguente esempio; quando la gestione di contenuti in WordPress, il collegamento Bin potrebbe essere simile a questa:

http://www.example.com/wp-admin/post.php?post=1337&action=trash&_wpnonce=369f188682

Tuttavia, se si dovesse cercare di modificare l'ID della pagina/post nell'URL a qualcos'altro (vedi sotto), il nonce non sarebbe più valido, restituirà un errore 403 e mostrerà: "Sei sicuro di volerlo fare?"

http://www.example.com/wp-admin/post.php?post=9100&action=trash&_wpnonce=369f188682

Aggiunta di una nascosta _nonce campo (prendere Contact Form 7 come un primo esempio) è generalmente buona pratica in sede di attuazione forme in WordPress, in quanto impedisce Cross-Site Request Forgery (CSRF), ecc

Risorse:

+0

Questo ancora non risponde alla mia domanda. Se WordPress non memorizza i nonces ovunque, come li convalida/verifica? :) –

+2

Da [WordPress Nonces] (https://codex.wordpress.org/WordPress_Nonces): "Gli eventi sono unici per la sessione dell'utente corrente, quindi se un utente accede o esce in modo asincrono, qualsiasi nonce nella pagina non sarà più valido." – bluemwhitew

+0

@bluemwhitew a questo punto la mia domanda è: qual è il significato della sessione dell'utente? È la sessione generata tramite php 'session_start()' o cos'altro. Per quanto ne so, wordpress non usa le sessioni di php. – Ferex

2

Nonces non vengono memorizzati direttamente da nessuna parte, si sono creati utilizzando la funzione wp_create_nonce e convalidati utilizzando il wp_verify_nonce.

Tali funzioni utilizzano a turno wp_hash per l'hash insieme una durata, una stringa personalizzata, user_id e il token di sessione memorizzati in wp_usermeta con la chiave session_tokens.

Problemi correlati