Come funziona admin-ajax.php?
Stiamo riscontrando alcuni problemi con uno sviluppatore esterno.
Vogliamo limitare l'accesso al sito wp-admin
solo all'accesso interno (tramite VPN). Semplicemente per evitare che venga attaccato da utenti esterni. Possiamo enumerare gli amministratori dal sito e non vogliamo che siano vittime di phishing.
Il nostro sviluppatore sostiene che non possiamo farlo perché il sito deve avere la pagina di amministrazione accessibile esternamente per funzionare correttamente, in particolare la pagina admin-ajax
.
Cosa fa la pagina admin-ajax.php
?
Si trova nella sezione admin di WordPress. È accessibile dagli utenti finali senza autenticazione? È una pratica non sicura rendere questo file disponibile agli utenti esterni?
admin-ajax.php
fa parte dell'API AJAX di WordPress, e sì, gestisce richieste sia dal backend che dal frontend. Non preoccuparti del fatto che si trovi nella cartella wp-admin
. Anche io trovo che sia una posizione strana, ma di per sé non rappresenta un problema di sicurezza. Non capisco però come questo si colleghi all'"enumerare gli amministratori".

consiglieresti di spostare la pagina wp admin in modo che non sia accessibile esternamente? e sai se farlo potrebbe interrompere qualcosa con l'admin ajax?

Non sono sicuro al 100% di cosa significhi, ma se richiedi che l'accesso ai file in wp-admin
avvenga solo dall'IP della tua VPN, allora sì, potrebbe causare problemi con AJAX. Le chiamate AJAX provengono dal browser dell'utente, quindi utilizzano l'IP dell'utente.

Per gli utenti non autenticati e non fidati, dovrai fare due eccezioni specifiche per la tua VPN / Firewall / Apache .htaccess
, che sono:
example.com/wp-admin/admin-post.php
example.com/wp-admin/admin-ajax.php
Questi sono due endpoint automatici utilizzati frequentemente sia da WordPress stesso che da vari plugin.
Ecco una spiegazione di cosa fa admin-post.php
:
admin-ajax.php
funziona in modo molto simile e una spiegazione utile è disponibile qui.

Se vuoi limitare l'accesso al backend di WP (es: wp-admin
), puoi semplicemente usare una regola .htaccess
nella directory wp-admin
.
Leggi questo articolo per una panoramica generale: Proteggere con password una directory usando .htaccess
Consulta anche questo argomento per il tuo caso specifico: Proteggere con password /wp-admin/

Oppure se preferisci farlo tramite IP: http://betterwp.net/wordpress-tips/protect-wordpress-wp-admin-folder/
