✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Turvaliste Ajaxi taotluste saatmine WordPressis (koos Noncesiga)

5

Ma tean, et REST API on praegu WordPressis tohutu vestlusteema ja seda õigustatult, kuid ikka on aegu, mil peame erinevatel põhjustel kasutama admin-ajaxi (seda hakatakse tundma).

  • Võib-olla on see rakendus,
  • Võib-olla ei võimalda aeg vajalikke lõpp-punkte luua,
  • Võib-olla tunnete end paremini koos admin-ajaxiga,
  • Ja nii edasi.

Olenemata põhjustest, miks te seda kasutate (mida ma ikka teen, olenemata sellest, mis see töö on), arvan, et on oluline veenduda, et saadame WordPressis turvalisi Ajaxi päringuid noncesside abil täpselt samamoodi nagu traditsioonilise vormi andmete esitamisel. .

Õiguspärane reaalajas pilt teie Ajaxi taotlust kandvatest juhtmetest.

Kui otsite veebist tulemusi selle kohta, kuidas seda teha, leiate mitmesuguseid vastuseid ja see on lihtsalt järjekordne tilk vanasõna ämbrisse.

Aga kui teil on uudishimulik retsept, kuidas sellega toime tulla, siis teen seda iga kord nii.

Turvalised Ajaxi taotlused WordPressis

WordPressi jaoks turvaliste Ajaxi taotluste saatmise protsess toimub järgmiselt:

  1. asetage oma JavaScripti fail järjekorda ja kasutage wp_localize_script ,
  2. veenduge, et teie JavaScript saadaks turvalisuse kohe,
  3. kontrollige tagasihelistamisel turvaväärtust ja käsitlege seda asjakohaselt.

Seda arvestades on siin iga ülaltoodu kohta mõned põhisisu, mis loodetavasti viivad teid turvalisema Ajaxi-põhise koodi kirjutamiseni.

1 Pange JavaScript järjekorda, lokaliseerige oma skript

Ma tean, et see tundub veider esimene samm, arvestades, et peaksite selle enne järjekorda panemist kirjutama. Ja sa peaksid muidugi. Kuid selle postituse jaoks tahtsin enne detailidesse hüppamist vajalikku koodi näidata.

On mõned viisid, kuidas inimesed valivad järjekorda admin-ajax.php, kuid see on protsess, mida järgin nii faili järjekorda seadmisel kui ka admin-ajax.php lisamisel:

Pange tähele ülalolevas koodis, et wp_enqueue_scripti väljakutse näeb välja täpselt selline, nagu ootate.

Kuid wp_localize_script on veidi erinev. See teeb järgmist.

  1. See järgneb skripti järjekorda seadmise kutsele (ja järjekord on oluline),
  2. see kasutab sama identifikaatorit, nimelt acme-security ,
  3. See määratleb objekti, mida saame kasutada oma JavaScripti koodis nimega acme_ajax_object, ja määratleb kaks atribuuti.
  4. Atribuut ajax_url säilitab admin-ajax.php tee.
  5. Turvaatribuut säilitab väärtuse, mille tagastab wp_create_nonce.

Niisiis, kuidas me saame seda kõike oma JavaScripti kontekstis ära kasutada?

2 Selle teabe kasutamine JavaScriptis

Esiteks peame Ajaxi kõne tegemisel veenduma, et kasutame ülaltoodud koodis määratletud objekti atribuuti ajax_url . See tähendab, et päringu URL tuleks saata aadressile acme_ajax_object.ajax_url.

Seejärel määrate funktsiooni, mida soovite kutsuda. Sel juhul on see get_custom_date, mida uurime hetke pärast.

Kuid kõige olulisem osa tuleb järgmisena: seejärel saadame kindlasti turvaväärtuse, mida säilitab acme_ajax_object turbeatribuut.

$.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. });

Pange tähele, et vastamisfunktsioonis kontrollime, kas vastus on korralikult õnnestunud, käsitleme seda õigesti ja liigume seejärel oma koodiga edasi.

Kuidas siis serveripoolne kood selle jaoks välja näeb?

3 Turvalisuse kontrollimine

Järgmiseks peame teie tagasihelistamisfunktsioonis (millele oleme andnud sobiva nimetuse get_custom_data ), enne kui midagi muud teeme, kontrollima turvaväärtust.

Kui väärtus läheb mööda, on kõik korras; vastasel juhul peame saatma veateate.

Pange tähele, et kui kutsume välja check_ajax_referer, kasutame failis wp_create_nonce määratletud väärtuse võtit ja esimeses etapis määratletud objekti atribuudi nime.

Kui see ei registreerita, saadame JSON-i tõrketeate, mida saame JavaScriptist lugeda, nagu eespool nägime. See peaks alati olema esimene samm enne tegeliku töö tegemist.

Kui kõik on kontrollitud, oleme valmis minema.

Kas see on tõesti turvaline?

See on paratamatu küsimus, kas pole? Ausalt öeldes ei taha ma lubada, et see on täiesti lollikindel, sest ma ei ole turvaekspert.

Kuid WordPressi sisseehitatud turvafunktsioone võimendava nonce-väärtuse omamine on parem kui andmete pimesi saatmine, ilma et saaks kontrollida saadetava allikat.

Loomulikult peate andmed ka enne nende ülekuulamist, kasutamist, potentsiaalset salvestamist ja nii edasi desinfitseerima. Aga see on hoopis teise postituse sisu.

See annab hoopis retsepti, kuidas saada WordPressis turvalisi Ajaxi päringuid.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem