IIS'te Http Metotlarını Açma ve Kapama (Web.config İle)


(+) Birebir web.config konfigurasyonları Win Server 2008 R2 ve 2012 R2’de denenmiştir ve başarılı olunmuştur.

IIS sunucularda http metotlarını kapamak için web.config dosyası ve konfigurasyonu kullanılabilir. Bu işlem <RequestFiltering’in alt etiketi <verbs’ün allowUnlisted attribute değeri true veya false olmasına göre iki farklı şekilde yapılabilir. Şöyle ki:

i) RequestFiltering alt etiketi <verbs etiketinin allowUnlisted attriute değeri true iken;

// Yasaklanacak Tüm Http Metotları Girme

<security>
<requestFiltering allowHighBitCharacters="false">
<verbs allowUnlisted="true">
<add verb="TRACE" allowed="false"/>
<add verb="OPTIONS" allowed="false" />
</verbs>
</requestFiltering>
</security>

ii) RequestFiltering alt etiketi <verbs etiketinin allowUnlisted attibute değeri false iken;

// İzin Verilecek Tüm Http Metotları Girme

<security>
<requestFiltering allowHighBitCharacters="false">
<verbs allowUnlisted="false">
<add verb="HEAD" allowed="true"/>
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
</verbs>
</requestFiltering>
</security>

Burada allowUnlisted="" değeri true aldığında yasaklanacak tüm http metotlarının girilmesi zorunlu olur, veya false aldığında izin verilecek tüm http metotlarının girilmesi zorunlu olur. Yani true ise tüm yasaklı http metotları alt alta girilmelidir, false ise tüm izinli http metotları alt alta girilmelidir.

allowUnlisted="" değeri true aldığında yasaklanacak tüm http metotlarının allowed="" özellikleri false değeri almalıdır. allowUnlisted="" değeri false aldığında ise izin verilecek tüm http metotlarının allowed="" özellikleri true değeri almalıdır. Bu allowed değerleri IIS GUI ekranında Request Filtering -> Http Verbs penceresindeki bilgilendirme balonunun istediği şekildir.

Bu konfigurasyon satırları <systemWebServer></systemWebServer> etiketleri içerisine yerleştirilerek yürürlüğe konabilir.

Sonuç olarak http metotlarını kapama web.config konfigurasyonları şu şekildedir:

a) Yöntem I: Yasaklı Http Metotlarını Belirtme

web.config :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>

<security>
<requestFiltering allowHighBitCharacters="false">
<verbs allowUnlisted="true">
<add verb="TRACE" allowed="false" />
<add verb="OPTIONS" allowed="false" />
<add verb="HEAD" allowed="false" />
</verbs>
</requestFiltering>
</security>

</system.webServer>
</configuration>

b) Yöntem II: İzinli Http Metotlarını Belirtme

Web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>

<security>
<requestFiltering allowHighBitCharacters="false">
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
</verbs>
</requestFiltering>
</security>

</system.webServer>
</configuration>

Ekstra

(+) Birebir web.config konfigurasyonları Win Server 2008 R2 ve 2012 R2’de denenmiştir ve başarılı olunmuştur.

Yukarıdaki konfigurasyon ayarları sonucunda yasaklı bir http metodu ile talep yapıldığında web sunucu yanıt olarak

Response: 404 Not Found

dönüşü yapmaktadır. Eğer 405 Method Not Allowed şeklinde yanıt dönmesi istenirse “yasaklı http metotlarını girme” yöntemindeki allowed="false" değerleri allowed="true" yapılır ve yasaklanmış http metotlarının karşılık geldikleri handler’lar <handlers etiketi altında disable edilir. Örneğin aşağıda <handlers etiketi ile OPTIONS ve TRACE talep metotları handler’ları disable edilmektedir.

web.config :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>

<handlers>
<remove name="TRACEVerbHandler" />
<remove name="OPTIONSVerbHandler" />
</handlers>

<security> <requestFiltering allowHighBitCharacters="false">
<verbs allowUnlisted="true">
<add verb="TRACE" allowed="true" />
<add verb="OPTIONS" allowed="true" />
</verbs>
</requestFiltering>
</security>

</system.webServer>
</configuration>

Böylece options talebi yapıldığında dönen yanıt 404 Not Found yerine artık 405 Method Not Allowed şeklinde olacaktır.

Not:

Http taleplerinin allowed attribute değerleri öncekinde (yasaklı http metotlarını girme yönteminde) olduğu gibi false bırakılırsa web sunucu yine talebin kullanıma kapalı olduğunu belirtmede 404 Not Found dönüşü yapacaktır. 405 için true yapılmalıdır.

Yararlanılan Kaynaklar:

  • https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/
  • https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/requestfiltering/verbs/
Bu yazı 23.05.2025 tarihinde, saat 02:41:32'de yazılmıştır.
Yazar : Hasan Fatih ŞİMŞEK Görüntülenme Sayısı : 65
Yorumlar
Henüz yorum girilmemiştir.
Yorum Ekle
*
* (E-posta adresiniz yayınlanmayacaktır.)
*
*

#Arşiv


#Giriş

ID :
Şifre :