Richieste remote con wp_safe_remote_get
Ieri ho condiviso un post su come usare wp_remote_get
ma ho tralasciato una funzione alternativa: wp_safe_remote_get
. L’obiettivo originale era utilizzare il primo post per mostrare:
- Cosa accetta la funzione originale,
- Come utilizzare la funzione originale,
- Cosa restituisce la funzione originale,
- Che aspetto ha un’implementazione.
E poi stavo per dare un’occhiata wp_safe_remote_get
. Ma c’è una sfida: ho amici intelligenti. Poco dopo aver pubblicato il post, ricevo una risposta da Roy :
Grazie, Roy! (Assicurati di dirgli "Ciao!". 🙂
Ma seriamente, il seguito al post di ieri è esattamente questo: wp_safe_remote_get
. Ed è come determinare la differenza tra le due funzioni e quando useresti una sull’altra.
wp_safe_remote_get
Direttamente dai documenti API, apprendiamo :
Questa funzione è ideale quando la richiesta HTTP viene inviata a un URL arbitrario. L’URL viene convalidato per evitare il reindirizzamento e richiedere attacchi di falsificazione.
E come la sua controparte, accetta un URL e una serie di argomenti che possono specificare come viene effettuata la richiesta.
Inoltre, proprio come wp_remote_get
, restituisce anche un array dei dati di risposta o un’istanza di WP_Error
se la richiesta non riesce.
L’utilizzo di questa funzione non è diverso dall’utilizzo della precedente, ma solleva la domanda:
Quando ne usiamo uno sopra l’altro? Più specificamente, quando usiamo wp_remote_get
versus wp_safe_remote_get
?
Leggi La fonte
Quando ci si trova di fronte a una situazione del genere, la prima cosa migliore da fare è leggere la fonte:
Se leggi i link sopra, noterai che quest’ultimo rifiuta gli “URL non sicuri" che viene determinato da wp_http_validate_url attraverso una serie di controlli avanzati.
Ma comunque, quale uso?
Questo lascia ancora la domanda senza risposta, vero? Penso che sia facile fare l’affermazione generale che dovresti sempre usare wp_safe_remote_get (o wp_safe_remote_post, se è per questo).
Tutti i progetti sono diversi, però.
Ad esempio, se stai lavorando su un plug-in che verrà utilizzato solo su una intranet e hai il controllo, ad esempio, su una whitelist di URL che possono essere passati alla funzione, allora puoi usare il primo.
Se, invece, stai esponendo quest’ultimo agli utenti, usa sempre la versione sicura della funzione.
In breve
La mia regola pratica è questa (ed è simile alla sanificazione):
Se gli utenti interagiranno con la funzione, assicurati che stiano interagendo con la versione più sicura possibile del codice.
Altrimenti, troppo è a rischio.