Skip to content
EVE Milano Consulenza SEO

EveMilano Logo White EveMilano Logo White

API? Cosa sono?

Dalla versione di WordPress 4.4 è stata aggiunta la funzione REST API (REpresentational State Transfer Application Programming Interface). Questa funzione è grandiosa se il tuo sito la usa. In caso contrario sarebbe meglio rimuovere gli elementi che vengono aggiunti in tutte le pagine del sito web e che devono essere caricati ad ogni pageview.

La cosa spiacevole è che la REST API sono state attivate in automatico su tutti i siti WordPress, anche se solo una piccola percentuale le utilizza davvero. Questo tutorial spiega come disattivare la REST API.

A cosa servono?

Quali informazioni possono essere recuperate dall’API di WordPress? Per impostazione predefinita, chiunque può interrogare in modo anonimo l’API di WordPress in esecuzione sul tuo sito Web WordPress per recuperare informazioni che sono già disponibili pubblicamente, come post, pagine, file multimediali, ecc.

La REST API di WordPress possono anche essere utilizzate per recuperare e aggiornare le informazioni del profilo utente o un post. Questi compiti possano essere eseguiti solo dopo l’autenticazione. Pertanto, nel concetto, la REST API WordPress consente la stessa funzionalità di una normale installazione di WordPress senza la necessità di avere un’interfaccia human friendly.

La REST API consentono agli sviluppatori di connettersi più facilmente con il back-end di WordPress, è un metodo standardizzato per la connessione. Con questa funzione è possibile ottenere le informazioni di WordPress tramite delle chiamate HTTPS a degli endpoint predefiniti che genereranno un file di ritorno in formato JSON con tutte le informazioni richieste. Tuttavia, questo sistema aggiunge anche l’intestazione seguente al tuo sito Web Worpress:

Link: <http://esempio.it/wp-json/>; rel="https://api.w.org/"

Lo stesso riferimento viene inserito nella pagina HTML, inutile quando non si sfruttano queste API.

<link rel='https://api.w.org/' href='https://esempio.it/wp-json/' />

Nota: prima di implementare una di queste tecniche, assicurati che il tuo sito non necessiti di alcuna REST API. In altre parole, procedi solo se sai cosa stai facendo ;)

La REST API di WordPress pone nuovi rischi per la sicurezza?

La risposta è sì e no. No perché le informazioni disponibili tramite la REST API di WordPress sono già disponibili al pubblico tramite altri mezzi, come il sito Web stesso e gli RSS. L’unica differenza tra il front-end del sito web, RSS e l’API REST è il modo in cui vengono presentati i dati.

Questa funzione potrebbe comportare nuovi rischi per la sicurezza semplicemente perché alla fine è una possibile fonte aggiuntiva di attacchi a WordPress. E dal punto di vista della sicurezza, più fonti di attacco hai più opzioni avranno gli hacker.

Perché disabilitare la REST API?

Perché consiglio di disattivare questa funzione? Poiché non tutti utilizzano o desiderano la WP REST API, quindi le intestazioni di collegamento ed i marcatori correlati non sono sempre necessari. Ad esempio, nessuno dei miei siti utilizza una delle REST API. Mi piace mantenere le cose leggere, veloci e pertinenti. Un modo per farlo è disabilitare il codice inutile.

Panoramica del tutorial

In questo articolo viene illustrato come disattivare tre elementi di codice che WordPress aggiunge alle pagine front-end:

  • Collegamento REST API
  • Collegamenti di scoperta oEmbed
  • REST API nell’intestazione HTTP

Onestamente non sono sicuro se i collegamenti oEmbed siano considerati parte dell’API REST, ma sembrano simili, appaiono nella stessa posizione e sono stati introdotti contemporaneamente alle altre REST, quindi lo includerò.

Disabilitare la Rest API di WordPress dall’intestazione HTTP

Il tuo sito non usa la REST API? Disabilita questa funzione inserendo questo script nel file functions.php.

/* Remove JSON API links in header html */
function remove_json_api () {
// Disable handling of internal embeds in oembed/1.0/proxy REST route.
add_filter( 'oembed_response_data', 'disable_embeds_filter_oembed_response_data' );
// Remove the REST API lines from the HTML Header
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
// Disable REST API link in HTTP headers
remove_action('template_redirect', 'rest_output_link_header', 11, 0);
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10 );
// Remove oEmbed-specific JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin', 1 );
// Remove all embeds rewrite rules.
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
// Remove filter of the oEmbed result before any HTTP requests are made.
remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10 );
// Load block editor JavaScript.
add_action( 'enqueue_block_editor_assets', 'disable_embeds_enqueue_block_editor_assets' );
// Remove wp-embed dependency of wp-edit-post script handle.
add_action( 'wp_default_scripts', 'disable_embeds_remove_script_dependencies');
}
add_action( 'after_setup_theme', 'remove_json_api' );

Verifica le modifiche

Prima di salvare il file functions.php apri una pagina del sito (una vale l’altra) e visualizza il codice. Ora salva il file functions.php e apri in una nuova finestra la stessa pagina aperta in precedenza e visualizza il codice sorgente. Confronta le due pagine, hai notato cosa è sparito?

Ore fai la stessa cosa con l’intestazione HTTP.

Update 201806

Qualche giorno fa sono finito su questa pagina dove i developer di WordPress si esprimono circa la rimozione o meno delle REST API. Per farla breve gli sviluppatori consigliano di NON disabilitare le REST API perché in future versioni di WordPress potrebbero essere necessarie per il normale funzionamento del CMS.

Una proposta valida è quella di non dare accesso alle REST API a meno che non sei utente loggato:

add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! empty( $result ) ) {
        return $result;
    }
    if ( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
    }
    return $result;
});

Articoli correlati

11 min lettura

I tool automatici degli hosting migrano solo file e database, tralasciando URL mapping e redirect. Procedura tecnica manuale per trasferire un sito WordPress su un altro dominio e server gestendo il database MySQL e preservando il traffico organico post-migrazione.
94 mi piace

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

31 min lettura

Come WordPress 7.1 carica i mu-plugin: ordine byte per byte, sottocartelle ignorate, recovery mode che non li mette in pausa, Plugin Dependencies che non li vede. Con snippet eseguiti su WordPress 7.1 per la guardia SEO tra staging e produzione, il caricamento selettivo dei plugin e l'audit di sicurezza della cartella.
0 mi piace
2 min lettura

Filtrare il traffico interno lato server garantisce dati analitici incontaminati su WordPress. Utilizzando costrutti PHP e conditional tags è possibile bloccare il caricamento dello script di Google Analytics per amministratori, editor e specifici ruoli utente loggati.
0 mi piace

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’esperienza di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto dal 2010 oltre 1.400 richieste di preventivo, un segnale chiaro della fiducia che webmaster, imprenditori e manager ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google e chatbot AI, noi siamo pronti a fornire quel valore aggiunto. Richiedi un preventivo ora e scopri la differenza tra noi e gli altri.
Richiedi un preventivo

Vuoi ricevere un avviso al mese con le nuove guide pubblicate?

Iscriviti alla newsletter!