{"id":229327,"date":"2022-10-23T15:50:00","date_gmt":"2022-10-23T12:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229327"},"modified":"2022-11-09T06:31:12","modified_gmt":"2022-11-09T03:31:12","slug":"richieste-remote-con-wp_safe_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/richieste-remote-con-wp_safe_remote_get\/","title":{"rendered":"Richieste remote con wp_safe_remote_get"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/it\/richieste-remote-con-wp_remote_get\/\" title=\"Ieri\" >Ieri<\/a> ho condiviso un post su come usare <code>wp_remote_get<\/code>ma ho tralasciato una funzione alternativa: <code>wp_safe_remote_get<\/code>. L&#8217;obiettivo originale era utilizzare il primo post per mostrare:<\/p>\n<ol>\n<li>Cosa accetta la funzione originale,<\/li>\n<li>Come utilizzare la funzione originale,<\/li>\n<li>Cosa restituisce la funzione originale,<\/li>\n<li>Che aspetto ha un&#8217;implementazione.<\/li>\n<\/ol>\n<p>E poi stavo per dare un&#8217;occhiata <code>wp_safe_remote_get<\/code>. Ma c&#8217;\u00e8 una sfida: ho amici intelligenti. Poco dopo aver pubblicato il post, ricevo una risposta da <a href=\"https:\/\/twitter.com\/royboy789\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Roy<\/a> :<\/p>\n<p>Grazie, Roy! (Assicurati di <a href=\"https:\/\/hiroy.club\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dirgli &quot;Ciao!&quot;<\/a>. \ud83d\ude42<\/p>\n<p>Ma seriamente, il seguito al post di ieri \u00e8 esattamente questo: <code>wp_safe_remote_get<\/code>. Ed \u00e8 come determinare la differenza tra le due funzioni e quando useresti una sull&#8217;altra.<\/p>\n<h2>wp_safe_remote_get<\/h2>\n<p>Direttamente dai documenti API, <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">apprendiamo<\/a> :<\/p>\n<blockquote>\n<p>Questa funzione \u00e8 ideale quando la richiesta HTTP viene inviata a un URL arbitrario. L&#8217;URL viene convalidato per evitare il reindirizzamento e richiedere attacchi di falsificazione.<\/p>\n<\/blockquote>\n<p>E come la sua controparte, accetta un URL e una serie di argomenti che possono specificare come viene effettuata la richiesta.<\/p>\n<p>Inoltre, proprio come <code>wp_remote_get<\/code>, restituisce anche un array dei dati di risposta o un&#8217;istanza di <code>WP_Error<\/code>se la richiesta non riesce.<\/p>\n<p>L&#8217;utilizzo di questa funzione non \u00e8 diverso dall&#8217;utilizzo della precedente, ma solleva la domanda:<\/p>\n<p>Quando ne usiamo uno sopra l&#8217;altro? Pi\u00f9 specificamente, quando usiamo <code>wp_remote_get<\/code>versus <code>wp_safe_remote_get<\/code>?<\/p>\n<h3>Leggi La fonte<\/h3>\n<p>Quando ci si trova di fronte a una situazione del genere, la prima cosa migliore da fare \u00e8 leggere la fonte:<\/p>\n<ol>\n<li><a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/4.7\/src\/wp-includes\/http.php#L168\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>wp_remote_get<\/code><\/a><\/li>\n<li><a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/4.7\/src\/wp-includes\/http.php#L67\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>wp_safe_remote_get<\/code><\/a><\/li>\n<\/ol>\n<p>Se leggi i link sopra, noterai che quest&#8217;ultimo rifiuta gli &#8220;URL non sicuri&quot; che viene determinato da <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_http_validate_url\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_http_validate_url<\/a> attraverso una serie di controlli avanzati.<\/p>\n<h3>Ma comunque, quale uso?<\/h3>\n<p>Questo lascia ancora la domanda senza risposta, vero? Penso che sia facile fare l&#8217;affermazione generale che dovresti sempre usare wp_safe_remote_get (o wp_safe_remote_post, se \u00e8 per questo).<\/p>\n<p>Tutti i progetti sono diversi, per\u00f2.<\/p>\n<p>Ad esempio, se stai lavorando su un plug-in che verr\u00e0 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.<\/p>\n<p>Se, invece, stai esponendo quest&#8217;ultimo agli utenti, usa sempre la versione sicura della funzione.<\/p>\n<h2>In breve<\/h2>\n<p>La mia regola pratica \u00e8 questa (ed \u00e8 simile alla sanificazione):<\/p>\n<p>Se gli utenti interagiranno con la funzione, assicurati che stiano interagendo con la versione pi\u00f9 sicura possibile del codice.<\/p>\n<p>Altrimenti, troppo \u00e8 a rischio.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se non sei sicuro di quando usare wp_remote_get o wp_safe_remote_get, forse questo post ti aiuter\u00e0 a determinare quando \u00e8 meglio.<\/p>\n","protected":false},"author":1,"featured_media":168025,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,814,720,865],"tags":[1168],"class_list":["post-229327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-plugin-2","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229327"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229327\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/168025"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}