✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Invio di richieste Ajax sicure in WordPress (con Nonces)

4

So che l’ API REST è un enorme argomento di conversazione in WordPress in questo momento, e giustamente, ma ci sono ancora momenti in cui dobbiamo usare admin-ajax (come sta per essere conosciuto) per una serie di motivi.

  • Forse è un’applicazione,
  • Forse il tempo non consente di creare gli endpoint necessari,
  • Forse sei più a tuo agio con admin-ajax,
  • E così via.

Indipendentemente dai motivi per cui lo usi (cosa che faccio ancora, per qualsiasi cosa funzioni), penso che sia importante assicurarci di inviare richieste Ajax sicure in WordPress usando nonce proprio come faresti se stessi inviando i dati dei moduli tradizionali .

Legittima ripresa dal vivo dei cavi che trasportano la tua richiesta dell’Ajax.

Se cerchi sul Web risultati su come farlo, otterrai una varietà di risposte e questa sarà solo un’altra goccia nel proverbiale secchio.

Ma se sei curioso di una ricetta su come gestirlo, ecco come lo faccio ogni volta.

Richieste Ajax sicure in WordPress

Il processo per l’invio di richieste Ajax sicure per WordPress segue questa procedura:

  1. accoda il tuo file JavaScript e usa wp_localize_script ,
  2. assicurati che il tuo JavaScript stia inviando il nonce di sicurezza,
  3. controlla il valore di sicurezza nella tua richiamata e gestiscilo in modo appropriato.

Detto questo, ecco alcuni suggerimenti per ciascuno dei precedenti che, si spera, ti portino a scrivere un codice basato su Ajax più sicuro.

1 Accoda JavaScript, Localizza il tuo script

So che questo sembra un primo passo strano considerando che dovresti scriverlo prima di metterlo in coda. E dovresti, ovviamente. Ma per questo post, volevo mostrare il codice necessario prima di saltare nei dettagli.

Ci sono alcuni modi in cui le persone scelgono di accodare admin-ajax.php, ma questo è il processo che seguo sia per accodare il mio file che per aggiungere admin-ajax.php:

Nota nel codice sopra, la chiamata a wp_enqueue_script appare esattamente come ti aspetteresti.

Ma wp_localize_script è leggermente diverso. Ecco cosa sta facendo:

  1. Segue la call to enqueue script (e l’ordine conta),
  2. utilizza lo stesso identificatore, ovvero acme-security ,
  3. Definisce un oggetto che possiamo usare nel nostro codice JavaScript chiamato acme_ajax_object e definisce due proprietà.
  4. La  proprietà ajax_url mantiene il percorso di admin-ajax.php.
  5. La  proprietà security mantiene un valore restituito da wp_create_nonce.

Quindi, come possiamo sfruttare tutto questo nel contesto del nostro JavaScript?

2 Utilizzo di queste informazioni in JavaScript

Innanzitutto, quando si effettua una chiamata Ajax, dobbiamo assicurarci di utilizzare la  proprietà ajax_url dell’oggetto che abbiamo definito nel codice sopra. Cioè, l’URL della richiesta deve essere inviato a acme_ajax_object.ajax_url.

Quindi definisci la funzione che vuoi chiamare. In questo caso, è get_custom_date che esamineremo tra poco.

Ma la parte più importante viene dopo: ci assicuriamo di inviare un valore di sicurezza che è mantenuto dalla proprietà di sicurezza di acme_ajax_object.

$.get( acme_ajax_object.ajax_url, { action: 'get_custom_data', security: acme_ajax_object.security }, function( response) { if (undefined !== response.success && false === response.success) { return; } // Parse your response here. });

Si noti che nella funzione di risposta, controlliamo che la risposta abbia esito positivo, la gestiamo in modo appropriato e quindi andiamo avanti con il nostro codice.

Quindi, come appare il codice lato server per questo?

3 Verifica della sicurezza

Successivamente, nella tua funzione di callback (che abbiamo opportunamente chiamato get_custom_data, dobbiamo prima controllare il valore di sicurezza prima di fare qualsiasi altra cosa.

Se il valore passa, siamo a posto; in caso contrario, dobbiamo inviare un errore.

Si noti che quando chiamiamo check_ajax_referer, utilizziamo la chiave del valore definito in wp_create_nonce e il nome della proprietà dell’oggetto che abbiamo definito nel primo passaggio.

Se non viene verificato, inviamo un errore JSON che possiamo leggere in JavaScript come abbiamo visto sopra. Questo dovrebbe sempre essere il primo passo prima di fare il lavoro vero e proprio.

Se tutto è a posto, siamo a posto.

È davvero sicuro?

Questa è la domanda inevitabile, vero? Ad essere onesti, non voglio promettere che questo sia completamente infallibile perché non sono un esperto di sicurezza.

Ma avere un valore nonce che sfrutterà le funzioni di sicurezza integrate di WordPress è meglio che inviare dati alla cieca senza alcun modo per verificare l’origine di ciò che viene inviato.

Naturalmente occorre anche sanificare i dati prima di interrogarli, utilizzarli, salvarli eventualmente e così via. Ma questo è il contenuto di un altro post.

Questo, invece, fornisce una ricetta per assicurarti di inviare richieste Ajax sicure in WordPress.

Fonte di registrazione: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More