WordPress'te kullanıcı adlarını nasıl gizlerim (user enumeration)?
Yazan: Eureka Studio · Güncellendi
Kısa yanıt
WordPress kullanıcı adlarını herkese açık dört yerde gösterir: /wp-json/wp/v2/users REST uç noktası, ?author=1 yönlendirmeleri, yazar arşivi adresleri ve çekirdek kullanıcı site haritası. Bunları gizlemek için REST listesini oturum açmamış ziyaretçilere kapat, ?author= taramalarını durdur, kullanıcı site haritasını kaldır ve giriş hatalarını aynı hale getir. Bir eklenti dördünü de yapabilir; sonra her birini test et.
Adımlar
1Adım 1
WordPress'in bugün ne gösterdiğine bak
Oturum açmadan siten.com/wp-json/wp/v2/users adresine git. Varsayılan bir kurulumda, her yazarın giriş adını slug alanında içeren bir JSON listesi alırsın.
2Adım 2
Yazar taramasını dene
Şimdi siten.com/?author=1 adresine git. WordPress seni /author/kullanici-adin/ adresine yönlendirir ve adı adres çubuğuna yazar. Botlar tüm kullanıcıları toplamak için 1, 2, 3 diye sayar.
3Adım 3
Dört yeri kapat
Hushfort → Yüzey Daraltma sekmesini aç ve katmanı aç. REST kullanıcı listesi, Yazar taraması ("?author=1 taramasını engelle"), Site haritası yazar listesi ve oEmbed yazar bilgisi ayarlarını açık bırak, sonra kaydet.
4Adım 4
Gizli bir pencereden yeniden test et
Aynı istekleri oturum açmadan tekrarla. Kullanıcı listesi artık 404 ile "rest_no_route" cevabı verir ve ?author=1 artık bir kullanıcı adına yönlendirmez.
Neden önemli
Giriş yapmak için bir saldırganın iki şeye ihtiyacı var: bir kullanıcı adı ve bir parola. WordPress, kutudan çıktığı haliyle ilk yarısını teslim eder. Bu bir hata değil; her yerin bir varlık sebebi var (uygulamalar için akışlar, düzgün yazar adresleri, arama motorları). Ama hepsi bir araya gelince herhangi bir bot sitendeki tüm giriş adlarının listesini saniyeler içinde çıkarabilir.
Kullanıcı adlarını gizlemek zayıf bir parolayı güvenli yapmaz. Yaptığı şey bulmacanın kolay yarısını ortadan kaldırmaktır; böylece her tahmin hem adı hem parolayı tutturmak zorunda kalır. Deneme sınırı ve iki adımlı girişle birlikte bu, tahmini yavaştan umutsuza çevirir.
WordPress'in kullanıcı adlarını yayınladığı dört yer:
- REST API —
/wp-json/wp/v2/users, yazarları genellikle giriş adlarıyla aynı olan slug değerleriyle listeler. - Yazar taramaları —
/?author=1,/author/giris-adi/adresine yönlendirir. - Yazar arşivleri — arşiv adresinin kendisi yazar slug'ını içerir.
- Çekirdek site haritası —
/wp-sitemap-users-1.xmlyazar arşivi adreslerini listeler. oEmbed cevapları da yazar bilgisi içerebilir.
Sık yapılan hatalar
- Bir yeri düzeltip işi bitmiş saymak. REST listesi açık kalırken
?author=taramasını kapatmak bir bot için hiçbir şeyi değiştirmez. Dördünü de kontrol et. - Görünen adın giriş adıyla aynı olması. Tüm sızıntılar kapalı olsa bile "admin tarafından yayınlandı" yazan bir tema adı ele verir. Kullanıcılar → Profil altında farklı bir görünen ad belirle.
- Gerçek yazar sayfalarını bozmak. Birkaç yazarı olan bir blogda yazar arşivleri işe yarar. Arşivlerin kendisi yerine numara taramalarını engelle.
- Ayrıntılı giriş hataları. "jane kullanıcı adı için girdiğiniz parola hatalı" mesajı adın var olduğunu doğrular. İki durum için de tek bir mesaj kullan.
Eklentisiz
Bunun çoğunu bir must-use eklentisiyle (wp-content/mu-plugins/hide-users.php) karşılayabilirsin:
<?php
// 1. REST user list: logged-out visitors get nothing.
add_filter( 'rest_endpoints', function ( $endpoints ) {
if ( ! is_user_logged_in() ) {
unset( $endpoints['/wp/v2/users'], $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
} );
// 2. ?author=N scans: stop the redirect that reveals the name.
add_action( 'template_redirect', function () {
if ( isset( $_GET['author'] ) && ! is_admin() ) {
wp_safe_redirect( home_url( '/' ), 301 );
exit;
}
} );
// 3. Core sitemap: drop the users provider.
add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) {
return 'users' === $name ? false : $provider;
}, 10, 2 );
// 4. Same message for wrong username and wrong password.
add_filter( 'login_errors', function () {
return 'The username or password is incorrect.';
} );
Dikkat edilecekler: önce bir test sitesinde dene, çünkü temalar ve eklentiler bazen REST kullanıcı listesini okur. Bu kod arşiv adreslerindeki yazar slug'ını değiştirmez; bunun için her yazarın nicename değerini değiştir ya da bir görünen ad eklentisi kullan. Ayrıca siteyi taşırken ya da yeniden kurarken takip etmen gereken bir dosya daha demektir.
Bir şeyler ters giderse
- Bir entegrasyon yazar listesini kaybetti. Bazı dış araçlar
/wp/v2/userslistesini oturum açmadan okur. Kimlik doğrulayabilmeleri için onlara bir uygulama parolası ver ya da listeye yeniden izin ver. - Yazar sayfaları 404 gösteriyor. Yazar arşivlerini tamamen kapatmayı seçmişsin. Yalnızca numara taramalarını engelleyen seçeneğe geç.
- SEO eklentisi hâlâ yazarları listeliyor. Birçok SEO eklentisi kendi yazar site haritasını üretir. O eklentide de yazar site haritalarını kapat.
Hushfort ile
Kullanıcı Adı Kalkanı Hushfort Pro'nun parçasıdır. Hâlâ neyin sızdığını gösteren Yüzey Taraması ise ücretsiz WordPress güvenlik eklentisi Hushfort Security'de yer alır.
Hushfort'un Yüzey Daraltma katmanının bir parçası olan Kullanıcı Adı Kalkanı dört yeri tek bir ekrandan kapatır:
- REST
/wp/v2/userslistesini oturum açmamış ziyaretçilere kapatır, /author/ad/arşivlerini koruyarak?author=Ntaramalarını engeller (istersen arşivleri tamamen kapatır),- çekirdek kullanıcı site haritasını ve oEmbed cevaplarındaki yazar bilgilerini kaldırır,
- giriş hata mesajlarını yanlış kullanıcı adı ve yanlış parola için aynı hale getirir.
Ardından Yüzey Taraması her yeri gerçek isteklerle test eder ve hâlâ sızan her kullanıcı adını tek tek söyler.
Sık sorulan sorular
WordPress'te kullanıcı adı taraması (user enumeration) nedir?
Kullanıcı adımın görünmesi bir güvenlik riski mi?
REST kullanıcı listesini engellemek düzenleyiciyi bozar mı?
Yazar arşivi sayfalarını tutabilir miyim?
Giriş hata mesajları neden önemli?
İlgili rehberler
WordPress sitemin neleri açık ettiğini görmek için nasıl güvenlik kontrolü yaparım?
WordPress siteni bir bot gibi test et: beş istek giriş sayfasının, XML-RPC'nin ve kullanıcı adlarının açık olup olmadığını ve neyi kapatacağını gösterir.
Adımları okuxmlrpc.php nedir ve WordPress'te nasıl kapatılır?
xmlrpc.php, giriş sayfasını gizlemenin kapatmadığı ikinci bir kapıdır. WordPress'te XML-RPC'yi güvenle kapatma, pingback'leri koruma ve test etme yolu.
Adımları okuWordPress'te giriş denemelerini nasıl sınırlarım?
WordPress'te giriş denemesi sınırla: birkaç başarısız girişten sonra IP'yi kilitle, kaba kuvveti durdur. Doğru ayarlar, elle kod ve kapatılacak açıklar.
Adımları oku



