“Sağlanan ana bilgisayar adı bu sunucu için geçerli değil” ne demek?


64

Bir Drupal 8 web sitesi çalıştırıyorum ve herhangi bir sayfaya göz attığımda, aşağıdaki hata mesajını içeren düz beyaz bir sayfa alıyorum.

Sağlanan ana bilgisayar adı bu sunucu için geçerli değil.

Ne anlama geliyor? Bunu nasıl düzeltebilirim?


2
Yerel bir geliştirme ortamı yapılandırırken bu sorunla karşılaşıyorsanız, burada ana hatları verilen çözüme bakın.
Patrick Kenny

Yanıtlar:


78

Bu hata mesajı, HTTP Host başlık saldırılarına karşı korumak için Drupal 8'e eklenen bir özellikten geliyor . Bu özellik ayrıca düzeltme eki için oluşturulan değişiklik kaydında da açıklanmaktadır .

Temel olarak, HTTP Host başlığını zorlu amaçlar için kandırmak ve Drupal'ı birkaç alt sistemde (özellikle link oluşturma) farklı bir alan adı kullanarak kandırmak mümkündü. Başka bir deyişle, HTTP Ana Bilgisayarı başlığının kullanıcı girişi olarak kabul edilmesi ve güvenilmemesi gerekir.

$settings['trusted_host_patterns']Bununla mücadele etmek için, Drupal 8'e, sitenin kullanabileceği "güvenilir" ana bilgisayar adlarının bir listesini yapılandırmak üzere Drupal 8'e eklendi. Ayarın, çalıştırılmasına izin vermek istediğiniz ana bilgisayar adlarını temsil eden, sınırlayıcılar olmadan bir düzenli ifade desenleri dizisi olması gerekir.

Örneğin, sitenizi "www.example.com" adresindeki tek bir ana bilgisayar adından kullanıyorsanız, bunu ayarlarınıza eklemelisiniz (genellikle bulunur ./sites/default/settings.php):

$settings['trusted_host_patterns'] = array(
  '^www\.example\.com$',
);

Not ^, \.ve $. Bunlar PCRE Sözdizimi . Bunlar sadece "www.example.com" ile tam olarak, başlangıçta ve sonunda ekstra bir şey olmadan eşleştirmek istediğiniz ve noktalara joker karakterler değil, nokta olarak davranılması gerektiği anlamına gelir.

"Example.com" adresinden çalışıyorsanız, yalnızca şunu kullanın:

$settings['trusted_host_patterns'] = array(
  '^example\.com$',
);

Birden çok etki alanı ve / veya alt etki alanı içeren bir site çalıştırmanız gerekiyorsa ve kanonik URL yönlendirme yapmıyorsanız, ayarınız şöyle görünür:

$settings['trusted_host_patterns'] = array(
  '^example\.com$',
  '^.+\.example\.com$',
  '^example\.org',
  '^.+\.example\.org',
);

Bu, sitenin tüm alt alan adlarıyla birlikte example.com ve example.org'daki tüm değişkenlerden kaçmasına izin verir.

$settings['trusted_host_patterns']Uygun değere ayarladıktan sonra sitenize tekrar göz atabilirsiniz.

Ayrıca, yönetici / raporlar / durumdaki durum raporu sayfasından güvenilir ana bilgisayar ayarlarınızın durumunu da kontrol edebilirsiniz.

Ayarı tamamen kaldırırsanız, güvenilir ana bilgisayar mekanizması kullanılmaz ve durum raporu sayfasında bir hata görürsünüz. Ayrıca siteniz savunmasız HTTP Ana Bilgisayarı başlık saldırıları olabilir.

Bu ayarı yapılandırdıysanız ve bu mesajı görüyorsanız, normal ifade sözdizimini berbat etmişsiniz demektir. Bu durumda, ilk örneği alın ve ayarlarınıza kopyalayın / yapıştırın ve ardından sitenizin çalıştığı ana bilgisayar adını yansıtacak şekilde düzenleyin.


5
Ben yamanın yazarlarından biriyim ve ayrıca yamanın değiştirildiği orijinal taslak taslağını da yazdım (yukarıdaki metnin çoğunun geldiği yer). Bu soru ve cevap, herhangi biriyle karşılaşması durumunda "yüksek googlability" hata mesajını vermektir. Bu ayarı daha iyi açıklayabileceğinizi düşünüyorsanız, lütfen kendi cevabınızı eklemek için çekinmeyin. Bu CW'yi de yapabiliriz.
mpdonadio

Drupal sunucusuna doğrudan erişilemediğinde, ancak ters bir proxy arkasında olduğunda ve bu sadece sıkıntı olduğunda bazilyon yapılandırmaları vardır. Temiz bir seçim mekanizması olmalı.

Şimdi olduğuna inanıyorum, bunu otomatik olarak yükleyiciye yerleştirme çabaları vardı, ancak bu şimdilik şimdilik kaldırıldı. Güvenilir ana bilgisayar adlarını ayarlamazsanız doğrulama yapılmaz. Ayrıca, şimdi sadece mpdonadio ve MPD :) arasındaki bağlantıyı yaptım :)
Berdir

Evet, otomatik yapılandırma işlenen yamadan kaldırıldı. Şu anda "kaydolma, ancak ayarlanmadığında sizi uyaracağız" dır. Yükleyicide ayarlamak için drupal.org/node/2404259 adlı bir takip var . @Berdir, bir süre önce internet kimliği krizi yaşadım ve burada mod değiştirdiğimde takma adımı değiştirmek istemedim :) Eğer farklıysa git git benim kullanıcı
adım

'^ Theming \ .dev $' öğesini kullandığımda şu hatayı alıyorum: Hata mesajı BeklenmedikValueException: Güvenilmez Ana Bilgisayar "symfony \ Component \ HttpFoundation \ Request-> getHost () satırında" localhost "(satır / 1221 / core / vendor / symfony / http) vakıf / Symfony'nin / Komponent / HttpFoundation / Request.php).
Axel Briche 28:15

6

localhost yüklemesi için settings.php dosyanızda aşağıdaki kodu kullanabilirsiniz.

$settings['trusted_host_patterns'] = array(
   '^localhost$','^YOUR_IP_ADDRESS$'
 );

3

Bunun nedeni trusted_host_patternsayarlar dosyanızdaki değişkendir. Yerel çevre üzerinde çalışıyorsanız ve bunu geçersiz kılmak istiyorsanız, settings.local.phpdosyanızdaki aşağıdaki bölümü tanımlayın :

/*
 * Drupal Trusted Host Patterns
 */
$settings['trusted_host_patterns'] = [];

Veya daha genel bir model :

$settings['trusted_host_patterns'] = [ '.*' ];

Veya yerel ortamlar için daha spesifik :

$settings['trusted_host_patterns'] = array(
  '^172\.20.\0.\3$',
  '^localhost$',
);

En basit çözümdür, ancak HTTP Host başlığını zorlu amaçlarla karıştırmamak için uygun değerleri ayarlamanız gerektiği için önerilmez. Web siteniz sadece yerel sitenizde çalışıyorsa, iyi olmalısınız.

Bkz: Güvenilir ana bilgisayar adı yapılandırması için yeni ayar .


1
Settings.local.php dosyasının doğru şekilde kullanılmasını tanımladığı için bu cevap için daha fazla oyuna sahip olmalısınız. Bu ayarlar muhtemelen settings.php içinde tanımlanmamalıdır, yerel ortamınız için 3 # karakter ile açılıp kapatılabilen farklı bir ayar dosyasına sahip olma amacını ortadan kaldırır. Yerel kurulumdaki bir bağlantı veya bazı bilgiler daha fazla oy kazanabilir.
dimmech

2

Bu sorun aynı zamanda varsa

<VirtualHost *:443>

ne zaman yapmalısın

<VirtualHost *:80>

SSL olmayan bir kurulumda kurun (geliştirme / test ortamları için olduğu gibi) ve 80 numaralı bağlantı noktasından siteye erişmeyi deneyin


0

Bunun nedeni, sunucunun güvenilir ana bilgisayar yapılandırmasıdır. Alan adını değiştirdiğinizde üretebilir veya 'trusted_host_patterns'. Probleme gidermek için, için yeni alan adı eklemek DRUPAL_ROOT/sites/SITE_FOLDER/settings.php(Ex: sites/defaults/settings.php)

Örnek: Alan adı = newdomain.com

$settings['trusted_host_patterns'] = array(
  '^newdomain.com\.loc$',
  '^www\.newdomain.com\.loc$',
);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.