Eğer varsa return 301 https://$host$request_uri;80 numaralı bağlantı noktasında varsayılan yanıt olarak, o zaman sunucu er ya da geç [1] açık vekiller listesi binip başlayabilir internette başka bir yerde trafik göndermek için istismar ediliyor. Günlüklerin bunun gibi mesajlarla doluysa, o zaman senin başına geldiğini biliyorsun:
42.232.104.114 - - [25/Mar/2018:04:50:49 +0000] "GET http://www.ioffer.com/i/new-fashion-fine-gold-bracelet-versaec-bracelet-641175733 HTTP/1.1" 301 185 "http://www.ioffer.com/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Hotbar 4.1.8.0; RogueCleaner; Alexa Toolbar)"
Sorun şu ki $host, tarayıcının Hostbaşlıkta ne gönderirse gönderilsin, hatta ana bilgisayar adını HTTP'nin açılış satırından geri gönderir, bunun gibi:
GET http://www.ioffer.com/i/new-fashion-fine-gold-bracelet-versaec-bracelet-641175733 HTTP/1.1
Bu sorun nedeniyle, burada bazı diğer cevaplar $server_nameyerine kullanmanızı öneririz $host. $server_namehep ne değerlendirir sen koymak server_namebeyanı. Ancak, orada birden fazla alt etki alanınız varsa veya bir joker karakter kullanıyorsanız, bu işe yaramaz, çünkü $server_nameyalnızca bildirimden sonraki ilk girişi kullanır server_nameve daha da önemlisi bir joker karakteri geri döndürür (genişletmez).
Peki, güvenliği sürdürürken birden fazla alanı nasıl destekleyebilirim? Kendi sistemlerimde, bu ikilemle önce , default_serverkullanmayan bir bloğu listeleyip $host, ardından aşağıdakileri yapan bir joker karakter bloğu listeleyerek ele aldım :
server {
listen 80 default_server;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
listen 80;
server_name *.example.com;
return 301 https://$host$request_uri;
}
(İkinci blokta birden fazla etki alanı da listeleyebilirsiniz.)
Bu kombinasyonla, example.comeşleştirilmemiş alanlar kodlanmış (herhangi bir zamanda) kodlanmış bir yere yönlendirilir ve kendinize uygun alanlar doğru yere gider. Sunucunuz açık bir proxy olarak kullanılamaz, bu nedenle sorun çıkarmazsınız.
Eğer kaba hissediyorsanız, ben de yapabilir varsayalım default_serverblok maç hiçbiri sizin meşru alanların ve bir şey saldırısını hizmet vermektedir. . . .
[1] Teknik olarak "proxy" yanlış kelime çünkü sunucunuz dışarı çıkmıyor ve istemciler için istekleri yerine getirmiyor, sadece bir yönlendirme gönderiyor, ancak doğru kelimenin ne olacağından emin değilim. Ayrıca hedefin ne olduğundan da emin değilim, ancak günlüklerinizi gürültü ile dolduruyor ve CPU'nuzu ve bant genişliğinizi tüketiyor, bu yüzden buna bir son verebilirsiniz.