Bisakah saya mengganti nama folder wp-admin?

70

Apakah mungkin untuk mengganti nama folder wp-admin?

Saya tahu saya bisa mengganti nama saja, tetapi kecuali jika didukung oleh kode banyak hal akan rusak.

Jika saya menggunakan nama folder khusus, itu akan membuatnya sedikit lebih aman, keamanan oleh ketidakjelasan dan semua itu.

Adam Dempsey
sumber

Jawaban:

39

Sayangnya saat ini tidak mungkin dan tampaknya tidak akan menganggapnya sebagai modifikasi seperti yang Anda lihat dari utas terbaru ini pada daftar wp-hacker dan tiket ini pada trac .

Jika Anda benar-benar ingin melihat ini dilihat kembali, saya sarankan:

  1. Hadir kasus Anda pada wp-hacker tetapi waspadai kasus penggunaan Anda lebih baik dan tidak "keamanan melalui ketidakjelasan" atau itu akan ditembak jatuh seperti di atas.

  2. Sampaikan argumen Anda dalam tiket trac dengan peringatan yang sama.

  3. Lebih baik lagi, unggah tambalan ke trac yang memungkinkan fungsionalitas yang Anda inginkan. Jauh lebih sulit untuk mengatakan tidak ketika pekerjaan sudah dilakukan (tapi tentu saja, mereka memang lebih suka mengatakan "tidak" lebih sering daripada mengatakan "ya" jadi sudah diperingatkan sebelumnya.)

MikeSchinkel
sumber
10
+1 mereka memang lebih suka mengatakan "tidak" lebih sering daripada mengatakan "ya" jadi sudah diperingatkan :)
Sisir
11

Tidak, Anda tidak dapat mengganti nama folder. Jalur ini dikodekan secara keras di beberapa lokasi di seluruh sumber WordPress.

Keamanan melalui ketidakjelasan sebenarnya bukan keamanan.

Viper007Bond
sumber
21
Dan itu adalah alasan malas yang terbaik untuk tidak mengubah praktik pemrograman yang buruk seperti hard-coding angka ajaib atau string.
hakre
6
@hakre +100 Btw, kebanyakan orang bertanya bagaimana menyembunyikan folder "wp- *" tidak mencari keamanan, mereka sebenarnya mencari ketidakjelasan sebenarnya..mereka mencoba membuat analisis situs mereka lebih banyak aktivitas yang membutuhkan usaha.
Victor Farazdagi
3
Sebenarnya, ini bukan keamanan karena ketidakjelasan. Ini URL yang tidak jelas, teknik keamanan yang valid. Lihat jawaban di bawah untuk detailnya.
cmc
1
Yah, saya mencoba menindaklanjuti dengan serangkaian argumen baru, tetapi jawabannya adalah: "Ini adalah perbaikan yang kuat dalam buku" dan agak rumit "login gmail juga tidak mengaburkan url". Tidak ada alasan teknis, tidak ada penjelasan, tidak ada perdebatan, mereka tidak akan melakukannya.
cmc
1
Wordpress jauh lebih terhormat daripada gmail. Salah satu alasannya adalah, wordpress adalah open-source. Semua orang tahu kode. Keamanan melalui ketidakjelasan sebenarnya bukan keamanan? Tapi kami bukan pembuat kode dari wordpress. Ini open-source. Dalam pandangan saya, ketidakjelasan memang membantu mengamankan. Mengapa orang menggunakan kata sandi terenkripsi? Menurut logika ini, tidak ada penggunaan kata sandi enkripsi .... Karena jika basis data dapat dilihat, peretas dapat melakukan apa saja ... Wordpress saya diretas 2 kali dan 2 kali wordpress perusahaan saya dalam 10 tahun ... Dan tidak ada akun
g7
11

Orang-orang terus menanyakan pertanyaan ini, tetapi orang-orang terus menandainya sebagai duplikat. Namun jawaban yang dipilih untuk ini, sebenarnya bukan jawaban untuk pertanyaan itu.

Untuk mengganti nama admin wordpress Anda perlu mengambil dua langkah.

Dalam kode berikut saya menggunakan dasbor sebagai nama wp-admin baru saya. Ubah dasbor dalam kode di bawah ini menjadi apa pun yang Anda ingin beri nama admin baru Anda.

Pertama, Anda perlu memberi tahu wordpress bahwa Anda ingin mengubah url admin.

Pada baris 2558 wp-include / link-template.php adalah kode yang membatalkan perintah admin url.

Menggunakan admin_urlfilter, Anda berhasil mengubah url admin dengan fungsi berikut:

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

Anda dapat menguji untuk melihat apa url baru Anda dengan melakukan ini:

function whats_my_admin_url() {
    $url = admin_url();
    echo '<pre><code>'; print_r( $url ); echo '</code></pre>';
    }
add_action( 'admin_notices', 'whats_my_admin_url' );

Namun, jika Anda akan melihat ketika mengklik melalui admin bahwa tidak semuanya berfungsi dan beberapa tautan mungkin memberi Anda 404 tidak ditemukan atau sesuatu yang serupa.

Kedua, ubah .htaccess di direktori root wordpress Anda dan tambahkan berikut ini di awal sebelum yang lainnya.

#CUSTOM ADMIN URL REWRITE
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

Sekarang, saya bukan ahli dalam hal mengedit .htaccess sehingga beberapa dari ini mungkin tidak diperlukan. Namun, saya tidak pernah menemukan itu tidak berhasil.

Ini semuanya. Buat file dan letakkan di folder plugins atau folder mu-plugins Anda. (jangan lupa untuk mengubah setiap instance dari dasbor ke url admin pilihan Anda)

<?php
/**
 * Plugin Name: Change My Admin URL
 * Plugin URI: http://wordpress.stackexchange.com/questions/106/can-i-rename-the-wp-admin-folder
 * Description: Changes the admin url where wp-admin becomes dashboard (or whatever you change it to)
 * Version: 1.0
 * Author: Bryan Willis
 * Author URI: http://profiles.wordpress.org/codecandid
 * License: GPL2
 */

/* 

#CUSTOM ADMIN URL REWRITE FOR HTACCESS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dashboard[^/]*$ dashboard/ [R=301,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^dashboard(.*)$ wp-admin$1? [QSA,L,NE]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/?$ / [NE,R=404,L]
RewriteCond %{QUERY_STRING} (.*)$
RewriteRule ^wp-admin/(.*)$ dashboard/$1 [QSA,R=301,L,NE]
</IfModule>
#CUSTOM ADMIN URL REWRITE

*/

function my_custom_admin_url($path) { 
    return str_replace('wp-admin', 'dashboard', $path); 
}
add_filter('admin_url', 'my_custom_admin_url');

Masalah?

Saya belum punya lebih dari setahun menggunakan metode ini. Anda mungkin memperhatikan bahwa wp-admin masih akan bekerja dengan jenis yang menyebalkan, tetapi lebih merupakan tindakan pencegahan daripada apa pun. Saya memiliki beberapa plugin yang ditulis dengan buruk yang telah hardcoded wp-admin di beberapa tempat yang tidak mau memuat ketika mencoba untuk memblokir atau mengarahkan ulang wp-admin. Saya yakin ada cara untuk melakukan ini dengan htaccess, tapi saya belum berhasil menemukannya. Juga, ini belum diuji pada multisite atau yang seperti itu sebelumnya.

Pembaruan: Pendekatan Alternatif

Ini sangat mirip, tetapi untuk beberapa alasan jawaban saya di atas tidak bekerja pada setiap host yang saya coba.

Tambahkan .htaccess

RewriteRule ^admin/(.*) wp-admin/$1?%{QUERY_STRING} [L]

Buat file dalam folder mu-plugins bernama new-admin.phpdan tambahkan ini di sana:

<?php
define('WP_ADMIN_DIR', 'admin');
defined('SITECOOKIEPATH') || define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_option('siteurl') . '/' ) );
define( 'ADMIN_COOKIE_PATH', SITECOOKIEPATH . WP_ADMIN_DIR);

add_filter('site_url',  'wpadmin_filter', 10, 3);
 function wpadmin_filter( $url, $path, $orig_scheme ) {
  $old  = array( "/(wp-admin)/");
  $admin_dir = WP_ADMIN_DIR;
  $new  = array($admin_dir);
  return preg_replace( $old, $new, $url, 1);
}

Catatan: Pendekatan ini tampaknya berfungsi lebih baik pada beberapa host, tetapi masih memiliki masalah untuk tidak mengalihkan tautan wp-admin ke url admin baru. Inilah pendekatan yang saya coba di bawah ini. Sementara ini di bawah ini tidak berfungsi, saya pikir itu di jalur yang benar. Saya tidak sepenuhnya yakin apa yang digunakan untuk kait. htaccess mungkin menjadi alternatif yang lebih baik, tetapi saya terus mendapatkan pengalihan loop ketika saya mencoba cara itu.

add_action('init', 'redirect_wp_admin_url_to_404');
function redirect_wp_admin_url_to_404(){
  $redirect_to = $_SERVER['REQUEST_URI'];
  if(count($_REQUEST)> 0 && array_key_exists('redirect_to', $_REQUEST)){
    $redirect_to = $_REQUEST['redirect_to'];
    $check_wp_admin = stristr($redirect_to, 'wp-admin');
    if($check_wp_admin){
      wp_safe_redirect( '404.php' );
    }
  }
}
Bryan Willis
sumber
Ada pendekatan serupa yang dituliskan ke dalam kelas di sini: wordpress.stackexchange.com/a/7832/76440
majick
Senang Anda menunjukkan jawaban itu @ickick! Ini jawaban yang bagus dan sebenarnya dari mana saya mendapatkan beberapa ide, tetapi sepertinya itu tidak berhasil bagi saya dalam banyak kasus di mana perubahan saya ikut berperan. Satu hal yang saya masih coba cari tahu adalah bagaimana mengarahkan ulang semua tautan wp-admin yang diketik secara manual di url. Saya tidak bisa menemukan yang itu. Jika Anda mendapat kesempatan, cobalah jawaban pembaruan saya di bagian bawah menggunakan site_urlfilter, bukan admin_url. Tampaknya bekerja dengan cukup baik.
Bryan Willis
9

Suatu pendekatan yang secara resmi didukung oleh WordPress adalah memindahkan file instalasi WordPress ke dalam sub-direktori, sambil menjaga situs tetap di root, seperti:

Alamat URL: http://my-blog.com

URL admin: http://my-blog.com/7nxnkkugrdzm/wp-admin

Meskipun ini tidak memberi Anda kebebasan penuh dalam mengubah url admin Anda, itu berarti Anda dapat mengawalinya dengan apa pun yang Anda suka. Ini sama baiknya dari sudut pandang keamanan. Ini juga memiliki manfaat memindahkan semua file instalasi WordPress ke lokasi yang tidak diketahui pengguna, sehingga harus menjadi bagian dari strategi pengerasan wordpress.

Dari WordPress Codex: Memberi WordPress Direktori Sendiri

Juga, perhatikan bahwa sementara skema keamanan ini disebut URL Tidak Jelas , itu tidak sama dengan keamanan oleh ketidakjelasan . URL tidak jelas adalah skema keamanan yang benar-benar valid yang sama baiknya dengan kata sandi, sementara keamanan dengan ketidakjelasan bergantung pada penggunaan prosedur rahasia yang tidak terbukti.

Peringatan yang sama berlaku seperti halnya dengan kata sandi: Panggil folder khusus itu sesuatu seperti 7nxnkkugrdzm, bukan happy-snappy-admin. Juga, pastikan pengguna Anda mengetahui url admin adalah rahasia.

cmc
sumber
7

Sebenarnya ada tutorial yang sangat bagus tentang ini di sini:

Cara Menyembunyikan Info WordPress dari mirror Kode Sumber Anda

Termasuk cara mengubah nama konten-wp, mengubah nama wp-admin, dan menghapus tag generator dari WordPress.

Tutorial ini akan mengubah jelas bukti atau indikasi dalam sumber-kode Anda, secara efektif menghilangkan Info WordPress dari situs Anda .

Ini menjelaskan cara mengubah nama folder, url login wp-admin, dan memastikan bahwa login.php mengalihkan ke situs utama sehingga orang dapat pergi ke sana secara langsung.

Graeme
sumber
6

Jika Anda ingin mencegah pengguna tingkat pelanggan dari melihat direktori wp-admin, Anda dapat membuat versi mandiri dari halaman login / registrasi dan profil / edit di direktori mereka sendiri. Kemudian, Anda dapat melindungi folder admin Anda melalui htaccess atau pembatasan IP. (Meskipun jika Anda melakukan ini, Anda harus membuat pengecualian untuk file admin-ajax, karena beberapa plugin menggunakannya untuk menambahkan, um, fungsi AJAX).

Pendekatan ini memberi Anda "ketidakjelasan" yang Anda inginkan (yang sebenarnya tidak banyak membantu, tetapi sering membuat klien dan manajer merasa lebih baik), dan juga menambahkan beberapa keamanan nyata dengan membatasi akses ke admin. Plus, jujur, URL yang hanya mengatakan "/ login" terlihat jauh lebih bagus daripada "wp-login.php".

Seharusnya tanpa mengatakan bahwa ini tidak membuat situs Anda antipeluru. Tapi itu peningkatan yang bagus dan mendasar.

MathSmath
sumber
2

Salah satu cara untuk mengunci panel kontrol administratif adalah dengan memanfaatkan aturan .htaccess. Cukup tambahkan file .htaccess ke root direktori wp-admin. Setelah Anda menambahkan file ini, cukup tambahkan aturan berikut untuk menolak semua alamat IP dan hanya mengizinkan IP Anda:

http://wp.tutsplus.com/tutorials/10-steps-to-securing-your-wordpress-installation/

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
whitelist address
allow from <IP ADDRESS HERE>
</LIMIT>
Josh
sumber
1

Jika Anda ingin mengganti nama wp-admin dengan tujuan menambahkan lapisan keamanan tambahan untuk instalasi WordPress Anda, Anda juga dapat mencoba Roots / Bedrock WordPress Boilerplate . Ini dapat membantu mengisolasi root web untuk membatasi akses ke file non-web. Ini juga dapat membantu dalam mengatur / mengamankan seluruh inti WordPress dengan meletakkannya di subdirektori sendiri seperti mengganti nama wp-content / ke aplikasi / serta fitur tambahan ini:

  • Manajemen ketergantungan dengan Komposer
  • Konfigurasi WordPress yang mudah dengan file khusus lingkungan
  • Variabel lingkungan dengan Dotenv
  • Autoloader untuk mu-plugins (gunakan plugins biasa sebagai mu-plugins)
  • Keamanan yang ditingkatkan (root web terpisah dan kata sandi aman dengan wp-password-bcrypt)

Anda juga dapat memeriksa Repo GitHub mereka untuk penggunaan yang lebih rinci:

Carl Alberto
sumber
0

Tidak, tidak mungkin untuk mengganti nama folder wp-admin dengan kekurangan kode atau hack htaccess,

Di masa lalu saya melakukan hal yang sama untuk klien dengan melakukan pencarian folder lengkap melalui Coda (editor yang saya gunakan) untuk tag "wp-admin, wp-content ... etc" dan saya menghapus "wp-" dari file.

Setelah itu Anda akan dapat menginstalnya tetapi:
Anda harus melakukan hal yang sama dengan plugin yang ingin Anda instal, Anda harus memperbarui inti secara manual dengan menghapus tag "wp-" dari versi baru.

Dalam semua hal yang saya tidak sarankan Anda untuk melakukan sesuatu seperti ini, biarkan apa adanya dan cobalah untuk mengimplementasikan halaman Login / Registrasi / Profil Pengguna untuk memberikan pengalaman yang lebih baik kepada pengguna / klien Anda.

Cristian dari Cozmolabs telah menulis tutorial yang sangat bagus. Anda dapat mengedit kode sedikit dan membuatnya berjalan di tema WordPress apa pun.

Anda juga dapat menambahkan formulir Posting dari frontend sehingga Admin dan Pengguna dengan Kemampuan untuk menulis posting dapat melakukannya dari frontend.

Di sini Anda dapat melihat contoh dan kode tentang cara membuat halaman Frontend Post. Pengajuan Posting Front-End

Anda juga dapat melihat beberapa plugin yang bagus di sini yang melakukan hal yang sama dengan lebih banyak fungsi.

Philip
sumber
0

BAGAIMANA TENTANG KERJA WP-ADMIN DARI IFRAME?

Buat halaman baru di dasbor wp yang disebut "Admin". mis .: domain Anda / admin /

Anda dapat membuat pernyataan kasus dengan header.php page.phpdan / atau footer.phpuntuk menonaktifkan hal-hal pada templat yang tidak diperlukan, menggunakan:

<?php
if(!is_page('admin')): //if not the admin page.

//wrap code not needed or wanted.

else: ?>

<style type="text/css">
    .responsive-iframe {
    position: relative;
    padding-bottom: 56.25%; /*16:9*/
    height: 0;
    overflow: hidden;

    iframe {
        position: absolute;
        top:0;
        left: 0;
        width: 100%; //or 100vw
        height: 100%; //or 100vh
    }
}   
</style>

<div class="responsive-iframe">
<iframe seamless="seamless" scrolling="yes" src="http://yourdomain/wp-admin/" frameborder="0" allowfullscreen></iframe>
</div>

<?php 
endif;

Ini tidak cantik, tetapi setidaknya Anda dapat menyembunyikan wp-admin dari url. Cara lain adalah dengan menggunakan penerusan domain dengan url mask diaktifkan.

samjco
sumber