Kısa cevap: evet
Bu sorunun cevabı kesin bir evet , ve başka türlü söylemesi tamamen sorumsuz .
Uzun cevap: gerçek dünyadan bir örnek
wp-config.php
Web kökünün dışına taşınmanın içeriğinin yakalanmasını özellikle engellediği gerçek sunucumdan gerçek bir örnek vermeme izin verin .
Böcek:
Plesk'deki bir hatanın bu açıklamasına bir göz atın (11.0.9 MU # 27'de düzeltildi):
Plesk, aboneliği barındırma planıyla eşitledikten sonra alt etki alanı iletmeyi sıfırladı (117199)
Kulağa zararsız geliyor, değil mi?
İşte bu hatayı tetiklemek için yaptıklarım:
- Başka bir URL'ye (örn yönlendirmek için bir alt kurma
site.staging.server.com
için site-staging.ssl.server.com
).
- Aboneliğin servis planını değiştirdi (örneğin PHP yapılandırması).
Bunu yaptığımda, Plesk alt etki alanını varsayılanlara sıfırlar: ~/httpdocs/
tercüman olmadan (örn. PHP) içerik sunma .
Ve farketmedim. Haftalarca.
Sonuç:
- İle
wp-config.php
Web köküne bir istek için /wp-config.php
WordPress yapılandırma dosyasını indirilmiş olacaktı.
- İle
wp-config.php
web kökü dışarıda bir istek için /wp-config.php
tamamen zararsız dosyasını indirdim. Gerçek wp-config.php
dosya indirilemedi.
Bu nedenle, wp-config.php
web kökünün dışına çıkmanın gerçek dünyada güvenlik açısından iyi bir avantaj sağladığı açıktır .
wp-config.php
Sunucunuzdaki herhangi bir yere nasıl taşınır
WordPress, wp-config.php
dosyanız için WordPress kurulumunuzun üstünde bir dizine otomatik olarak bakacaktır , bu nedenle taşıdığınız yer o zaman biter!
Ama ya başka bir yere taşıdıysanız? Kolay. wp-config.php
Aşağıdaki kodla WordPress dizininde yeni bir oluşturun :
<?php
/** Absolute path to the WordPress directory. */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** Location of your WordPress configuration. */
require_once(ABSPATH . '../phpdocs/wp-config.php');
(Yukarıdaki yolu, taşınan wp-config.php
dosyanızın asıl yoluyla değiştirdiğinizden emin olun .)
Bir sorunla karşılaşırsanız open_basedir
, open_basedir
PHP yapılandırmanızdaki yönergenin yeni yolunu eklemeniz yeterlidir:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
Bu kadar!
Aksine argümanları ayırmak
wp-config.php
Web kökünün dışına taşınmaya karşı her argüman yanlış varsayımlara dayanır.
Bağımsız Değişken 1: PHP devre dışı bırakılmışsa, zaten
Birinin [ wp-config.php
] içeriğini sunucuların PHP yorumlayıcısını atlatması durumunda görmesinin tek yolu … Eğer bu olursa zaten başınız belada demektir: Sunucunuza doğrudan erişimleri var.
YANLIŞ : Yukarıda tarif ettiğim senaryo, bir izinsiz giriş değil, yanlış yapılanmanın sonucudur.
Bağımsız Değişken 2: Yanlışlıkla PHP'yi devre dışı bırakmak nadirdir ve bu nedenle önemsizdir
Bir saldırgan PHP işleyicisini değiştirmek için yeterli erişime sahipse, çoktan batırdınız. Kazara değişiklikler benim deneyimimde çok nadirdir ve bu durumda şifreyi değiştirmek kolaylaşır.
YANLIŞ : Yukarıda tarif ettiğim senaryo, ortak bir sunucu yapılandırmasını etkileyen, ortak bir sunucu yazılımı parçasındaki bir hatanın sonucudur. Bu pek "nadir" (ve ayrıca güvenlik, nadir senaryo için endişelenmek anlamına gelir).
WTF : İzinsiz girişlerden sonra şifreyi değiştirmek, izinsiz giriş sırasında hassas bilgilerin toplanıp toplanmayacağı konusunda pek yardımcı olmaz. Gerçekten, biz hala WordPress'in yalnızca günlük bloglama için kullanıldığını ve saldırganların yalnızca tahrifatla ilgilendiğini düşünüyor muyuz? Sunucumuzu korumak konusunda endişelenelim, sadece birisi girdikten sonra geri yüklemekle kalmayacak.
Bağımsız Değişken 3: Erişimi reddetmek wp-config.php
yeterince iyi
Sanal ana bilgisayar konfigürasyonunuz yoluyla dosyaya erişimi kısıtlayabilir veya
.htaccess
- dosyaya dış erişimi etkin bir şekilde belge kökünün dışına taşınacak şekilde sınırlandırabilirsiniz.
YANLIŞ : Sanal bir ana bilgisayar için sunucu varsayılanlarınızın şu şekilde olduğunu hayal edin: PHP yok .htaccess
, hayır , allow from all
(üretim ortamında pek olağandışı değil). Yapılandırmanız rutin bir işlem sırasında bir şekilde sıfırlanırsa - örneğin panel güncellemesi gibi - her şey varsayılan durumuna dönecek ve siz açığa çıkacaksınız.
Ayarlar yanlışlıkla yanlışlıkla varsayılanlara sıfırlandığında güvenlik modeliniz başarısız olursa, daha fazla güvenlik gerekir.
WTF : Neden birisi özellikle daha az güvenlik katmanı önermektedir? Pahalı araçların sadece kilitleri yoktur; ayrıca alarmlara, immobilizerlere ve GPS izleyicilere sahiptir. Bir şey korumaya değerse, doğru yapın.
Tartışma 4: Yetkisiz erişim çok wp-config.php
önemli değil
Veri tabanı bilgileri gerçekten [ wp-config.php
] içindeki tek hassas şeydir .
YANLIŞ : Kimlik doğrulama anahtarları ve tuzları, herhangi bir sayıda olası kaçırma saldırısında kullanılabilir.
WTF : Veritabanı kimlik bilgileri tek şey olsa bile wp-config.php
, sen edilmelidir dehşete onlara ellerini sürebilmek bir saldırganın.
Bağımsız Değişken 5: wp-config.php
Web kökünün dışına çıkmak bir sunucuyu daha az güvenli yapar
WordPress'in [ wp-config.php
] erişimine izin vermeniz gerekir, bu nedenle open_basedir
dizini belge kökünün üstüne eklemek için genişletmeniz gerekir .
YANLIŞ : Varsayının içeride wp-config.php
olduğunu httpdocs/
, sadece hareket ettirin ../phpdocs/
ve open_basedir
sadece httpdocs/
ve içerecek şekilde ayarlayın phpdocs/
. Örneğin:
open_basedir = "/var/www/vhosts/example.com/httpdocs/;/var/www/vhosts/example.com/phpdocs/;/tmp/"
( Varsa /tmp/
, her zaman veya kullanıcı tmp/
dizininizi eklemeyi unutmayın .)
Sonuç: konfigürasyon dosyaları her zaman daima daima web kökünün dışında bulunmalıdır.
Güvenliği önemsiyorsanız wp-config.php
, web kökünüzün dışına çıkacaksınız.