Come spostare la pagina di login wp-admin in un'altra posizione?

23 feb 2011, 04:36:29
Visualizzazioni: 41.6K
Voti: 3

Voglio spostare la pagina di login fisicamente (non virtualmente). Per favore, suggerite un metodo tramite plugin che possa modificare i codici core al volo (anche dopo l'aggiornamento del codice core). Può essere un ulteriore livello di sicurezza.

2
Commenti

Sei giunto a una conclusione riguardo a questa domanda? E le risposte più votate?

brasofilo brasofilo
21 lug 2012 14:47:41

Puoi anche provare questo plugin: http://wordpress.org/extend/plugins/ozh-simpler-login-url/

wpmayor wpmayor
19 mar 2011 00:10:35
Tutte le risposte alla domanda 12
0

Puoi disabilitare la pagina wp-login dalle tue funzioni agganciandoti a login_head:

add_action( 'login_head', 'wp_die');

(ovviamente questo è un modo molto grezzo per farlo, ma impedisce a chiunque di poter accedere attraverso quella pagina. Potresti creare una funzione di reindirizzamento o un messaggio di avviso, invece di un semplice die.)

E copia il file wp-login esistente in un'altra posizione, assicurandoti di aggiornare il percorso relativo a wp-load.php vicino all'inizio (e qualsiasi altro percorso relativo che potrebbe essere presente, inclusi i link a se stesso e le azioni del form.

(Ovviamente dovrai rimuovere l'azione che hai aggiunto a login_head qui, altrimenti non potrai accedere nemmeno da questa pagina.)

Poi, dovresti solo aggiungere un filtro a login_url che restituisca l'indirizzo della tua nuova pagina di login, altrimenti le richieste ai file wp-admin verranno reindirizzate alla vecchia pagina di login, che ora è disabilitata.

19 mar 2011 01:05:23
4

Questa non è una grande idea per la sicurezza perché la pagina wp-login o wp-admin di per sé non rappresenta una minaccia alla sicurezza. Anche se si potrebbe sostenere che se qualcuno avesse la tua password/nome utente potrebbe non sapere dove effettuare il login, ottenendo così una sicurezza per oscuramento.

Come ha detto kronus, potresti probabilmente fare alcuni reindirizzamenti elaborati, non sono sicuro di quanto sarebbero scalabili con le future versioni o se ne vale davvero la pena, personalmente non penso che ne valga la pena e prendo la sicurezza molto seriamente.

Suggerirei alcune idee migliori per il tuo login.

Abilita SSL per il login/admin (https).

Proteggi con password la tua pagina usando .htaccess (avrai così un doppio login).

Usa un plugin come Limit Login Attempts, che blocca un utente dopo tentativi di login falliti.

23 feb 2011 08:20:58
Commenti

Grazie per i tuoi gentili suggerimenti, ma voglio spostare la pagina di login in un'altra posizione.

user931 user931
23 feb 2011 08:42:35

È assolutamente una buona idea. Nascondere il fatto che il tuo sito è gestito da WordPress scoraggia le persone dal tentare di violare la struttura principale. Se stessi cercando blog WordPress e www.site.com/wp-login.php restituisse un errore 404, passerei oltre senza provare a sfruttare vulnerabilità PHP note. Ogni piccolo accorgimento di sicurezza aiuta a rendere il tuo sito più a prova di proiettile.

kristina childs kristina childs
14 dic 2012 21:55:31

E una vulnerabilità nota del core sarebbe? Sì, non ne hai o non ne conosci alcuna, quindi stai parlando per niente. I professionisti della sicurezza proteggono veramente le applicazioni e non nascondono le cose, quello è da bambini.

Wyck Wyck
14 dic 2012 22:22:08

Non ho mai parlato di exploit del core. Ci sono tantissimi hack per plugin, temi WordPress, ecc. Basta guardare qualsiasi sito che riporta exploit. Osservando i log delle richieste HTTP fallite, i siti che gestisco ricevono attacchi brute force e XSS specificamente mirati a WordPress tutto il giorno, ogni giorno. Secondo la tua logica, non dovresti neanche spostare wp-content fuori dalla cartella root dell'installazione, mettere wp-config.php sopra la cartella root, rimuovere "powered by wordpress" dal footer della pagina, cambiare il prefisso predefinito wp_ delle tabelle o eliminare l'account admin di default. Modificare le impostazioni predefinite è una forma di protezione, e la pagina di login non fa eccezione.

kristina childs kristina childs
25 apr 2013 01:38:06
1

Nessuna di queste risposte è stata particolarmente utile. Metto in dubbio le motivazioni dell'OP, ma ecco come farlo. Aggiungi questo al tuo functions.php, ma assicurati di sostituire "$login_page_id":

// Questo reindirizzerà la pagina di login effettiva alla tua nuova pagina
add_action( 'login_redirect', 'custom_login_redirect' );
function custom_login_redirect()
{
    if ( 'wp-login.php' == $GLOBALS['pagenow'] )
    {
        // Imposta il tuo $login_page_id
        wp_redirect( get_permalink($login_page_id) );
        die;
    }
}

// Questo sostituirà l'URL di login utilizzato da Wordpress
add_filter( 'login_url', 'custom_login_url', 10, 2 );
public function custom_login_url( $login_url='', $redirect='' )
{
    // Imposta il tuo $login_page_id
    return get_permalink($login_page_id);
}

Sulla tua nuova pagina di login, puoi semplicemente aggiungere questa funzione per mostrare un modulo di accesso:

<?php wp_login_form(); ?>

http://codex.wordpress.org/Function_Reference/wp_login_form

21 feb 2013 08:44:06
Commenti

Alla fine ho creato un plugin che gestisce questo. https://wordpress.org/plugins/sewn-in-template-log-in/

Jake Jake
23 feb 2016 03:29:39
1

OP, la cosa migliore che potresti fare in questo caso è il filtraggio degli IP e consentire solo quelle reti che hanno il permesso di accedere all'area WP-Admin (ad esempio l'IP del tuo ufficio, gli IP degli sviluppatori, ecc.).

## .htaccess all'interno della cartella wp-admin
order deny,allow
deny from all
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
6 mar 2014 05:42:32
Commenti

Con le versioni recenti di Apache, questo sarebbe sostituito semplicemente da require ip xx.xx.xx.xx, credo.

jfklein jfklein
10 feb 2019 23:22:29
2

Nei cinque anni in cui questa domanda è stata qui, nessuno ha affrontato il problema principale: la sicurezza attraverso l'oscurità è una tecnica valida per respingere i bot automatizzati e mantenere i log puliti. L'obiettivo di spostare/nascondere wp-admin è far sembrare a un bot che questo non sia un sito WordPress.

Il modo in cui nascondo (ma non sposto) wp-admin è mostrare ai bot la pagina 404 standard quando tentano di accedere a quell'URL. Solo l'accesso dal mio indirizzo IP di casa consente alla pagina wp-admin di caricarsi correttamente. Questo metodo fa sembrare a un attaccante/bot che wp-admin non esista, senza però interrompere il codice core di WP o i plugin che utilizzano il percorso wp-admin in modo hard-coded. Questo codice .htaccess fa il lavoro:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteRule ^/?wp-admin - [R=404,L]

Naturalmente, quando utilizzi il codice, sostituisci 12.34.56.78 con il tuo indirizzo IP. Non dimenticare di eseguire l'escape dei caratteri . poiché l'indirizzo IP viene interpretato come un'espressione regolare.

21 lug 2015 17:09:51
Commenti

Questa non è una soluzione poiché la maggior parte delle persone ha un IP dinamico e potrei voler accedere al pannello di amministrazione dal telefono

okainov okainov
19 gen 2020 22:51:40

@TheGodfather: Allora aggiorna il RewriteCond di conseguenza

dotancohen dotancohen
21 gen 2020 16:07:35
0

Ho ideato una soluzione per spostare il login di WordPress da /login/, /wp-admin/ o /wp-login.php a /cms utilizzando solo le regole di riscrittura .htaccess.

Nessun plugin necessario!

Incolla questo nel file .htaccess nella root del progetto:

<IfModule mod_rewrite.c>
      # Sposta il login su /cms.
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{HTTP_REFERER} !/cms(.*)$
      RewriteCond %{REQUEST_METHOD} POST
      RewriteRule ^(.*) ./cms?message=wrong_login_path [R=302,L]
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{QUERY_STRING} !^cms=unlocked
      RewriteCond %{REQUEST_METHOD} !POST
      RewriteRule ^(.*) ./cms?message=redirect_to_custom_login_path [R=302,L]
      RewriteRule ^cms wp-login.php?cms=unlocked [L]
</IfModule>

Salute!

Aggiornamento: Ho migliorato alcune regole in modo che anche le richieste POST a /wp-login.php generino un errore 403 forbidden. Questo aiuterà contro i bot che tentano di accedere alla dashboard con metodi brute-force. Sentiti libero di commentare questo post se hai miglioramenti da suggerire per queste regole.

31 gen 2018 12:01:21
0

Crea semplicemente nuove pagine di login in sottodirectory. Copia la pagina esistente di wp-login in una nuova directory nella root del tuo sito (ad esempio "/login"), rinominala in index.php, aggiungi il bootstrap di WordPress all'inizio della pagina e personalizzala come preferisci (temi grafici, ecc.).

Dovrai modificare leggermente il codice predefinito della pagina di login, principalmente per sostituire i link e i redirect hardcoded verso "wp-login.php". Ma finché lasci tutti gli hook e i filter al loro posto, questo approccio non interferirà con l'integrazione dei plugin. Gli aggiornamenti del core di WordPress non daranno problemi, a meno che non includano modifiche alla pagina wp-login stessa (cosa che raramente accade nelle versioni minori).

Puoi anche creare pagine per gli account utente in questo modo (io le metto nella directory "/profile"). Una volta fatto, gli utenti di livello subscriber non avranno mai bisogno di accedere a wp-admin, quindi puoi proteggerlo con un file htaccess. Questa è la parte che effettivamente ti darà la maggiore sicurezza che cercavi. Assicurati solo di fare un'eccezione nel tuo htaccess per il file admin-ajax, poiché alcuni plugin lo utilizzano nel frontend.

Sono abbastanza sicuro che non troverai una soluzione basata solo su plugin. Ma se dovessi trovarne una, faccelo sapere!

18 apr 2011 07:15:40
0

Potresti utilizzare questo plugin:

http://wordpress.org/extend/plugins/wp-login/

Puoi semplicemente creare una pagina e dire al plugin che quella è la pagina di login. Ma tutto quello che fa è reindirizzare wp-login.php alla tua "pagina". Quindi qualsiasi bot che cerca wp-login.php verrà semplicemente reindirizzato alla tua "pagina".

Per proteggere la tua pagina di login dai bot dovresti usare una combinazione di cookie e .htaccess poiché la maggior parte dei bot non utilizza i cookie. Qualcosa come questo:

RewriteCond %{HTTP_COOKIE} !^PHPSESSID=\w+ [OR]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^wp-(comments-post|login|register)\.php http://example\.com [R=301,L,NS]

Nell'esempio sopra sto usando un cookie di sessione PHP, poiché è il più semplice da implementare.

9 lug 2012 02:55:40
0

Questa risposta è un'integrazione a quella di dotancohen perché incompleta. La risposta di dotancohen non tiene conto di wp-login.php, che dovresti considerare se stai cercando di oscurare WordPress.

Ecco come restituire un errore 404 sia per wp-admin che per wp-login.php:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{THE_REQUEST} \ /+wp-(admin|login)
5 mag 2017 11:54:56
4

Potresti provare a modificare il file .htaccess e impostare un reindirizzamento verso un altro percorso a tua scelta.

23 feb 2011 05:34:09
Commenti

Stai parlando di URL Rewrite usando .htaccess? Non rischia di interrompere le funzioni interne del core?

user931 user931
23 feb 2011 08:15:30

Beh... se lo fai correttamente non dovrebbe interrompere nulla. Leggendo il tuo aggiornamento ti suggerirei di rinominare (o spostare) le tue pagine di login in un'altra directory/path. Cosa hai in mente? Un altro sottodominio? O semplicemente un altro percorso?

konus konus
23 feb 2011 17:40:17

Solo un altro percorso..

user931 user931
26 feb 2011 00:01:31

Allora puoi fare un Search&Replace in tutti i file di WordPress, poi rinominare i file che hanno lo stesso pattern, e infine rinominare la cartella wp-admin. È un po' complicato e sarai legato a quella versione (ogni aggiornamento romperà queste modifiche)

konus konus
26 feb 2011 08:57:46
0

Per modificare l'URL di logout (nell'area admin) modifica il tuo file functions.php:

add_filter( 'logout_url', 'custom_logout_url');
function custom_logout_url( $login_url)
{
   $url = str_replace( 'wp-login', 'tuo_file_logout', $login_url );
   return $url;
}
25 apr 2013 13:34:56
0
-5

Ho risolto questo problema eliminando tre dei miei blog e modificando i parametri di limit-login al massimo possibile. 9999

Per quello sporco spammer all'indirizzo 208.91.199.94 che ha colpito la mia pagina di login 750 volte negli ultimi due giorni, sto lavorando per eliminarlo in altri modi.

8 lug 2012 20:30:38