it-swarm-tr.com

IIS / ASP.NET Yanıt Başlıkları nasıl kaldırılır

Güvenlik istekleri üzerine istemci tarayıcılarına gönderilen yanıt üstbilgileri bir çift kaldırmak için soran bir çift IIS/6.0 sunucularım var. Yanıt üstbilgileri aracılığıyla platform bilgilerinin açıklanmasından endişe ediyorlar. Tüm HTTP-HEADERS IIS web sitesi yapılandırması (X-Powered-By veya böyle bir üstbilgi) dışında kaldırdım.

(Kişisel olarak, gizli olsa bile bu bilgilerin kolayca bulunabileceğini biliyorum, ancak benim çağrım değil.)

Kaldırmak istediğim başlıklar:

  • Sunuc - Microsoft-IIS/6.0
  • X-AspNet-Sürümü - 2.0.50727

Ayrıca ASP.NET MVC de kendi üstbilgisini yayar biliyorum, nasıl da kaldırılacağını biliyorsanız, bu yararlı olacaktır.

  • X-AspNetMvc Sürümü - 1.0
48
Bryan Rehbein

Güvenlik departmanınız, sunucu türünün tanımlanmasını zorlaştırmak için bunu yapmanızı istiyor. Bu, otomatik bilgisayar korsanlığı araçlarının barajını azaltabilir ve insanların sunucuya girmesini zorlaştırabilir.

IIS içinde web sitesi özelliklerini açın, ardından HTTP Üstbilgileri sekmesine gidin. X başlıklarının çoğu burada bulunabilir ve kaldırılabilir. Bu, tek tek siteler veya tüm sunucu için yapılabilir (ağaçtaki Web Siteleri nesnesinin özelliklerini değiştirin).

Sunucu üstbilgisi için, IIS6'da bunu kaldırmak için Microsoft'un RLScan aracını kullanabilirsiniz. Port 80 Software ayrıca ServerMask adında ve sizin için çok daha fazlasını yapacak bir ürün yapar.

IIS7 (ve üstü) için, sunucu üstbilgisini veya boş değerini yeniden yazmak için RL Yeniden Yazma Modülü kullanabilirsiniz. Web.config dosyasında (bir sitede veya bir bütün olarak sunucuda), URL Yeniden Yazma Modülü kurulduktan sonra bu içeriği ekleyin:

<rewrite>    
  <outboundRules rewriteBeforeCache="true">
    <rule name="Remove Server header">
      <match serverVariable="RESPONSE_Server" pattern=".+" />
      <action type="Rewrite" value="" />
    </rule>
  </outboundRules>
</rewrite>

İsterseniz yeniden yazma işlemine özel bir değer ekleyebilirsiniz. Bu örnek, başka harika bilgilere de sahip olan bu makale kaynağından alınmıştır.

MVC üstbilgisi için Global.asax'ta:

MvcHandler.DisableMvcResponseHeader = true;

TechNet blog bağlantısı artık geçerli olmadığından IIS7 bilgilerini güncellemek için 11-12-2019 arasında düzenlendi.

32
Justin Scott

Çok fazla bilgi ifşa eden tüm özel başlıkları kaldırmak için yöntemler IIS 7) için değiştirilir (maalesef):

Başlık Adı: X-Powered-By

Ekle:

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
  </customHeaders>
</httpProtocol>

içinde <system.webServer> Bölüm.

Üstbilgi Adı: Sunucu

PreSendRequestHeaders olayından Response.Headers.Remove ("Sunucu") öğesini çağırarak bu üstbilgiyi çıkaran bir httpModule uygulayın. Bunun için başka bir kaynak: ASP.NET MVC Web Uygulamanızı IIS 7

Üstbilgi Adı: X-AspNet-Sürümü

Web.config dosyasının httpRuntime bölümünde - ayarlayın:

<httpRuntime enableVersionHeader="false" />

Üstbilgi Adı: X-AspNetMvc Sürümü

Global.asax'daki Application_Start olayından - aşağıdaki kodu (C #) yürütün:

MvcHandler.DisableMvcResponseHeader = true;
58
Adam

Bunu bir ASP.NET uygulamasının web.config dosyasına koymak X-AspNet-Version üstbilgisinden kurtulur:

<system.web>
<httpRuntime enableVersionHeader="false" />
</system.web>

System.web etiketinin dosyada zaten var olması gerektiğini unutmayın. Bir kopya oluşturmayın, sadece httpRuntime etiketini ekleyin. HttpRuntime etiketi de zaten mevcut olabilir. Öyleyse, özelliği ekleyin veya zaten varsa değerini ayarlayın.

16
squillman

Şu anki projemdeki "sertleştirme" döngüsünden geçtikten sonra - Aşağıdaki başlıkları kaldırmak için bir HTTPModule içeren aldığımız yaklaşım hakkında blog yazdım :

Sunucu,
X-ASPNet versiyonu,
X-AspNetMvc versiyonu,
X-Destekli-tarafından

Aşağıda üretilen ilgili parçalar:

Ancak, sunucu yanıt üstbilgisini yapılandırma yoluyla kaldırmanın kolay bir yolu yoktur. Neyse ki IIS7, işlevselliğini kolayca genişletmenizi sağlayan yönetilebilir takılabilir bir modül altyapısına sahiptir. Aşağıda, belirli bir HTTP Yanıt Başlıkları listesini kaldırmak için bir HttpModule kaynağı verilmiştir:

namespace Zen.Core.Web.CloakIIS
{
    #region Using Directives

    using System;
    using System.Collections.Generic;
    using System.Web;

    #endregion

    /// <summary>
    /// Custom HTTP Module for Cloaking IIS7 Server Settings to allow anonymity
    /// </summary>
    public class CloakHttpHeaderModule : IHttpModule
    {
        /// <summary>
        /// List of Headers to remove
        /// </summary>
        private List<string> headersToCloak;

        /// <summary>
        /// Initializes a new instance of the <see cref="CloakHttpHeaderModule"/> class.
        /// </summary>
        public CloakHttpHeaderModule()
        {
            this.headersToCloak = new List<string>
                                      {
                                              "Server",
                                              "X-AspNet-Version",
                                              "X-AspNetMvc-Version",
                                              "X-Powered-By",
                                      };
        }

        /// <summary>
        /// Dispose the Custom HttpModule.
        /// </summary>
        public void Dispose()
        {
        }

        /// <summary>
        /// Handles the current request.
        /// </summary>
        /// <param name="context">
        /// The HttpApplication context.
        /// </param>
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += this.OnPreSendRequestHeaders;
        }

        /// <summary>
        /// Remove all headers from the HTTP Response.
        /// </summary>
        /// <param name="sender">
        /// The object raising the event
        /// </param>
        /// <param name="e">
        /// The event data.
        /// </param>
        private void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            this.headersToCloak.ForEach(h => HttpContext.Current.Response.Headers.Remove(h));
        }
    }
}

Montajı imzaladığınızdan emin olun, ardından bunu web sunucularınızın GAC'sine yükleyebilir ve uygulamanızın web.config dosyasında (veya global olarak uygulanmasını istiyorsanız, machine.config) şu değişiklikleri yapabilirsiniz:

<configuration>
    <system.webServer>
        <modules>
            <add name="CloakHttpHeaderModule" 
                 type="Zen.Core.Web.CloakIIS.CloakHttpHeaderModule, Zen.Core.Web.CloakIIS, 
                       Version=1.0.0.0, Culture=neutral, PublicKeyToken=<YOUR TOKEN HERE>" />
        </modules>
    </system.webServer>
</configuration>
5
HowardvanRooijen

Kontrol bu blog . Yanıt başlıklarını kaldırmak için kod kullanmayın. Kararsızdır Microsoft

Bunun yerine Web.config özel Başlıkları bölümünü kullanın:

<system.webServer>          
<httpProtocol>
    <!-- Security Hardening of HTTP response headers -->
    <customHeaders>
        <!--Sending the new X-Content-Type-Options response header with the value 'nosniff' will prevent 
                Internet Explorer from MIME-sniffing a response away from the declared content-type. -->
        <add name="X-Content-Type-Options" value="nosniff" />

        <!-- X-Frame-Options tells the browser whether you want to allow your site to be framed or not. 
                 By preventing a browser from framing your site you can defend against attacks like clickjacking. 
                 Recommended value "x-frame-options: SAMEORIGIN" -->
        <add name="X-Frame-Options" value="SAMEORIGIN" />

        <!-- Setting X-Permitted-Cross-Domain-Policies header to “master-only” will instruct Flash and PDF files that 
                 they should only read the master crossdomain.xml file from the root of the website. 
                 https://www.Adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
        <add name="X-Permitted-Cross-Domain-Policies" value="master-only" />

        <!-- X-XSS-Protection sets the configuration for the cross-site scripting filter built into most browsers. 
                 Recommended value "X-XSS-Protection: 1; mode=block". -->
        <add name="X-Xss-Protection" value="1; mode=block" />

        <!-- Referrer-Policy allows a site to control how much information the browser includes with navigations away from a document and should be set by all sites. 
                 If you have sensitive information in your URLs, you don't want to forward to other domains 
                 https://scotthelme.co.uk/a-new-security-header-referrer-policy/ -->
        <add name="Referrer-Policy" value="no-referrer-when-downgrade" />

        <!-- Remove x-powered-by in the response header, required by OWASP A5:2017 - Do not disclose web server configuration -->
        <remove name="X-Powered-By" />

        <!-- Ensure the cache-control is public, some browser won't set expiration without that  -->
        <add name="Cache-Control" value="public" />
    </customHeaders>
</httpProtocol>

<!-- Prerequisite for the <rewrite> section
            Install the URL Rewrite Module on the Web Server https://www.iis.net/downloads/Microsoft/url-rewrite -->
<rewrite>
    <!-- Remove Server response headers (OWASP Security Measure) -->
    <outboundRules rewriteBeforeCache="true">
        <rule name="Remove Server header">
            <match serverVariable="RESPONSE_Server" pattern=".+" />

            <!-- Use custom value for the Server info -->
            <action type="Rewrite" value="Your Custom Value Here." />
        </rule>
    </outboundRules>
</rewrite>
</system.webServer>
2
mitaka

Aşağıdaki kodu kullanın ve benim için çalışır iis 7.5

protected void Application_PreSendRequestHeaders()
{
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}
1
Nasir Mahmood

Web.config ve Global.asax.cs, aşağıdaki başlıklar dahil tüm özel başlıklardan kurtulmak için:

  • Sunucu
  • X-aspnet sürüm
  • X-AspNetMvc sürüm

Web.config:

<system.web> 
  <httpRuntime enableVersionHeader="false"/> 
</system.web>
<system.webServer>
   <httpProtocol>
      <customHeaders>
         <clear />
      </customHeaders>
   </httpProtocol>
</system.webServer> 

Global.asax.cs:

protected void Application_Start() 
{ 
    MvcHandler.DisableMvcResponseHeader = true; 
}

Ayrıca bakınız https://stackoverflow.com/a/20739875/1678525

0
Jan H