Cum să muți pagina de autentificare wp-admin în altă locație?

23 feb. 2011, 04:36:29
Vizualizări: 41.6K
Voturi: 3

Doresc să mut pagina de autentificare fizic (nu virtual). Vă rog să sugerați o soluție bazată pe plugin care ar putea modifica codurile de bază din mers (chiar și după actualizarea codului de bază). Poate fi un nivel suplimentar de securitate.

2
Comentarii

Ai ajuns la o concluzie despre această Întrebare? Dar despre Răspunsurile cu cele mai multe voturi?

brasofilo brasofilo
21 iul. 2012 14:47:41

Poți încerca și acest plugin: http://wordpress.org/extend/plugins/ozh-simpler-login-url/

wpmayor wpmayor
19 mar. 2011 00:10:35
Toate răspunsurile la întrebare 12
0

Puteți dezactiva pagina wp-login din funcțiile dumneavoastră prin conectarea la login_head:

add_action( 'login_head', 'wp_die');

(aceasta este în mod evident o metodă foarte neelegantă de a face acest lucru, dar împiedică oricine să se poată autentifica prin acea pagină. Ați putea transforma asta într-o funcție de redirecționare sau un mesaj de avertizare, în loc să folosiți doar die.)

Și copiați fișierul existent wp-login într-o altă locație, asigurându-vă că actualizați calea relativă către wp-load.php din partea de sus (precum și orice alte căi relative care ar putea fi acolo, inclusiv linkurile către sine și acțiunile formularului.

(Evident, va trebui să eliminați acțiunea pe care ați adăugat-o la login_head aici, altfel nu veți putea să vă autentificați nici din această pagină.)

Apoi, ar trebui doar să adăugați un filtru la login_url care să returneze adresa noii pagini de autentificare, altfel solicitările pentru fișierele wp-admin vor fi redirecționate către vechea pagină de autentificare, care acum este dezactivată.

19 mar. 2011 01:05:23
4

Nu este o idee bună din punct de vedere al securității, deoarece pagina wp-login sau wp-admin în sine nu reprezintă o amenințare la adresa securității. Deși se poate argumenta că, dacă cineva are parola/numele de utilizator, s-ar putea să nu știe unde să se autentifice, astfel obținând securitate prin obscuritate.

Așa cum a spus kronus, probabil ai putea face niște redirecționări inteligente, dar nu sunt sigur cât de bine s-ar scala cu viitoarele versiuni sau dacă merită efortul. Personal, nu cred că merită, iar eu iau securitatea în serios.

Aș sugera câteva idei mai bune pentru pagina ta de autentificare:

Activează SSL pentru autentificare/administrare (https).

Protejează pagina cu parolă folosind .htaccess (astfel vei avea o dublă autentificare).

Folosește un plugin precum Limit Login Attempts, care blochează un utilizator după un anumit număr de încercări eșuate de autentificare.

23 feb. 2011 08:20:58
Comentarii

Mulțumesc pentru sugestiile tale frumoase, dar vreau să mut pagina de login în altă locație.

user931 user931
23 feb. 2011 08:42:35

Este cu siguranță o idee bună. Ascunderea faptului că site-ul tău este construit pe WordPress descurajează oamenii să încerce să hack-uiască structura de bază. Dacă aș fi în căutare de bloguri WordPress și aș încerca www.site.com/wp-login.php și aș primi o eroare 404, aș trece mai departe fără a încerca să exploatez vulnerabilități PHP cunoscute. Orice măsură de securitate ajută la face site-ul tău mai robust.

kristina childs kristina childs
14 dec. 2012 21:55:31

Și o vulnerabilitate cunoscută în nucleu ar fi? Nu, tu nu ai sau nu cunoști nicio vulnerabilitate, așa că vorbești degeaba. Profesioniștii în securitate securizează aplicațiile și nu ascund lucruri, asta e pentru copii.

Wyck Wyck
14 dec. 2012 22:22:08

Nu am spus niciodată despre exploit-uri pentru nucleu. Există o grămadă de hack-uri pentru plugin-uri WordPress, teme, etc. Doar aruncați o privire pe orice site de raportare a exploit-urilor. Uitându-mă în jurnalele de cereri HTTP eșuate, site-urile pe care le administrez primesc atacuri brute force și XSS personalizate pentru WordPress toată ziua, în fiecare zi. După logica ta, nici nu ar trebui să muți wp-content în afara folderului rădăcină, wp-config.php deasupra folderului rădăcină, să elimini "powered by wordpress" din subsolul paginii, să schimbi prefixul implicit wp_ al tabelelor sau să ștergi contul implicit de admin. Modificarea setărilor implicite este securizare, iar pagina de login nu face excepție.

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

Niciunul dintre aceste răspunsuri nu a fost deosebit de util. Mă întreb care sunt motivele OP, dar iată cum să faci asta. Adaugă acest cod în fișierul tău functions.php, dar asigură-te să înlocuiești "$login_page_id":

// Aceasta va redirecționa pagina reală de login către noua ta pagină
add_action( 'login_redirect', 'custom_login_redirect' );
function custom_login_redirect()
{
    if ( 'wp-login.php' == $GLOBALS['pagenow'] )
    {
        // Setează $login_page_id-ul tău
        wp_redirect( get_permalink($login_page_id) );
        die;
    }
}

// Aceasta va înlocui URL-ul de login folosit de WordPress
add_filter( 'login_url', 'custom_login_url', 10, 2 );
public function custom_login_url( $login_url='', $redirect='' )
{
    // Setează $login_page_id-ul tău
    return get_permalink($login_page_id);
}

Pe noua ta pagină de login, poți pur și simplu să adaugi această funcție pentru a afișa un formular de login:

<?php wp_login_form(); ?>

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

21 feb. 2013 08:44:06
Comentarii

Am ajuns să creez un plugin care se ocupă de asta. https://wordpress.org/plugins/sewn-in-template-log-in/

Jake Jake
23 feb. 2016 03:29:39
1

OP, cel mai bun lucru pe care îl poți face în această privință este filtrarea IP și permisiunea accesului doar pentru acele rețele care au voie să se autentifice în zona WP-Admin (de ex. IP-ul biroului tău, IP-ul dezvoltatorilor, etc.).

## .htaccess în interiorul folderului 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
Comentarii

Cu versiunile recente de Apache, aceasta ar fi înlocuită pur și simplu cu require ip xx.xx.xx.xx, cred.

jfklein jfklein
10 feb. 2019 23:22:29
2

În cei cinci ani de când există această întrebare, nimeni nu a abordat problema principală: Securitatea prin obscuritate este o tehnică validă pentru a respinge boturile automate și a menține jurnalele curate. Scopul mutării/ascunderii wp-admin este de a părea pentru un bot că acesta nu este un site WordPress.

Modul în care ascund (dar nu mut) wp-admin este să prezint boturilor pagina standard 404 atunci când încearcă să acceseze acea adresă URL. Numai accesul de la adresa mea IP de acasă permite încărcarea corectă a paginii wp-admin. Această metodă face ca pentru un atacator/bot să pară că wp-admin nu există, fără a strica codul de bază al WP sau pluginurile care utilizează calea wp-admin în mod direct. Acest cod .htaccess realizează acest lucru:

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

Desigur, când utilizați codul, înlocuiți 12.34.56.78 cu propria dvs. adresă IP. Nu uitați să escapați caracterele ., deoarece adresa IP este interpretată ca o expresie regulată.

21 iul. 2015 17:09:51
Comentarii

Aceasta nu este o soluție deoarece majoritatea covârșitoare a oamenilor au IP dinamic, iar eu aș putea dori să mă autentific în panoul de administrare de pe telefon

okainov okainov
19 ian. 2020 22:51:40

@TheGodfather: Atunci actualizează RewriteCond în consecință

dotancohen dotancohen
21 ian. 2020 16:07:35
0

Am găsit o soluție pentru mutarea paginii de login Wordpress de la /login/, /wp-admin/ sau /wp-login.php la /cms folosind doar reguli de rescriere în .htaccess.

Fără nevoie de plugin!

Lipiți acest cod în fișierul .htaccess din rădăcina proiectului:

<IfModule mod_rewrite.c>
      # Mută login-ul la /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>

Noroc!

Actualizare: Am îmbunătățit câteva reguli astfel încât chiar și cererile POST către /wp-login.php să genereze o eroare 403 interzis. Acest lucru va ajuta împotriva boturilor care încearcă să se autentifice în panoul de administrare folosind metode de forță brută. Nu ezitați să comentați acest articol dacă aveți sugestii de îmbunătățire pentru aceste reguli.

31 ian. 2018 12:01:21
0

Pur și simplu construiește pagini noi de autentificare în subdirectoare. Copiază pagina existentă wp-login într-un director nou în rădăcina site-ului (poate "/login"), redenumește-o în index.php, adaugă un bootstrap WordPress în partea de sus a paginii și fă ce dorești cu ea (temă, etc.).

Trebuie să ajustezi puțin codul implicit al paginii de autentificare, în principal pentru a înlocui link-urile și redirecționările hardcodate către "wp-login.php". Dar atâta timp cât lași toate hook-urile și filtrele la locul lor, această abordare nu va afecta integrarea cu plugin-urile. Actualizările nucleului WordPress sunt în regulă, cu excepția cazului în care actualizarea include modificări la pagina wp-login în sine (ceea ce se întâmplă rar în versiunile minore).

De asemenea, poți construi pagini de cont utilizator în acest fel (eu le-am plasat în directorul "/profile"). După ce ai făcut acest lucru, utilizatorii cu nivel de abonat nu ar trebui să aibă nevoie să intre în wp-admin, așa că poți să-l protejezi cu un fișier htaccess. Aceasta este partea care îți oferă de fapt securitatea sporită pe care o cauți. Doar asigură-te să faci o excepție în htaccess pentru fișierul admin-ajax, deoarece unele plugin-uri îl folosesc pe frontend.

Sunt destul de sigur că nu vei găsi o soluție bazată doar pe plugin-uri. Dar dacă găsești, anunță-ne!

18 apr. 2011 07:15:40
0

Ai putea folosi acest plugin:

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

Poți crea pur și simplu o pagină și să-i spui pluginului că acolo se află pagina de login. Dar, în esență, tot ce face este să redirecționeze wp-login.php către "pagina" ta. Deci, orice bot care caută wp-login.php va fi pur și simplu redirecționat către "pagina" ta.

Pentru a-ți proteja pagina de login de boti, ar trebui să folosești o combinație între un cookie și .htaccess, deoarece majoritatea botilor nu folosesc cookie-uri. Ceva de genul:

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]

În exemplul de mai sus, folosesc un Cookie de Sesiune PHP, deoarece este cel mai ușor de implementat.

9 iul. 2012 02:55:40
0

Acest răspuns este un supliment la dotancohen deoarece este incomplet. Răspunsul lui dotancohen nu ia în considerare wp-login.php, pe care ar trebui să-l ții în vedere dacă încerci să ascunzi WordPress.

Iată cum poți returna eroarea 404 atât pentru wp-admin cât și pentru wp-login.php:

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

Puteți încerca să editați fișierul .htaccess și să efectuați o redirecționare către o altă cale la alegerea dumneavoastră.

23 feb. 2011 05:34:09
Comentarii

Vorbești despre rescrierea URL-urilor folosind .htaccess? Nu strică funcțiile interne de bază?

user931 user931
23 feb. 2011 08:15:30

Ei bine... dacă o faci corect, nu ar trebui să strici nimic. Citind actualizarea ta, aș sugera să redenumești (sau să muți) elementele tale de logare într-un alt director/cale. Ce ai în minte? Un alt sub-domeniu? Sau doar o altă cale?

konus konus
23 feb. 2011 17:40:17

Doar o altă cale...

user931 user931
26 feb. 2011 00:01:31

Atunci poți face un Căutare & Înlocuire în toate fișierele WordPress, apoi redenumește fișierele care au același model, iar apoi redenumește folderul wp-admin. Este puțin mai complicat și vei fi legat de acea versiune (orice actualizare va strica aceste modificări)

konus konus
26 feb. 2011 08:57:46
0

Pentru a modifica URL-ul de logout (în admin) editează fișierul functions.php:

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

Am rezolvat această problemă ștergând trei dintre blogurile mele și modificând parametrii limit-login la valorile maxime posibile. 9999

Pentru acel ticălos spammer de la 208.91.199.94 care a atacat pagina mea de login de 750 de ori în ultimele două zile, lucrez la eliminarea lui prin alte metode.

8 iul. 2012 20:30:38