[asp.net-mvc] ASP.Net MVC 기본 HTTP 헤더를 제거하는 방법?

내가 작업중 인 MVC 응용 프로그램의 각 페이지는 다음 HTTP 헤더를 응답으로 설정합니다.

X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0

이것들이 보이지 않게하려면 어떻게해야합니까?



답변

X-Powered-ByIIS의 사용자 지정 헤더입니다. IIS 7부터 다음을 추가하여 제거 할 수 있습니다 web.config.

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

이 헤더는 필요에 따라 수정할 수도 있습니다. 자세한 내용은 http://www.iis.net/ConfigReference/system.webServer/httpProtocol/customHeaders를 참조하십시오 .


헤더를 web.config제거하려면 다음을 추가하십시오 X-AspNet-Version.

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

마지막으로을 제거 하려면 이벤트 에서 다음을 X-AspNetMvc-Version편집 Global.asax.cs하고 추가하십시오 Application_Start.

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

Application_PreSendRequestHeaders이벤트를 통해 런타임에 헤더를 수정할 수도 있습니다 Global.asax.cs. 헤더 값이 동적 인 경우에 유용합니다.

protected void Application_PreSendRequestHeaders(object source, EventArgs e)
{
      Response.Headers.Remove("foo");
      Response.Headers.Add("bar", "quux");
}


답변

global.asax 파일에 코드를 추가하여 제거 할 수도 있습니다.

 protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
 {
   HttpContext.Current.Response.Headers.Remove("X-Powered-By");
   HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
   HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
   HttpContext.Current.Response.Headers.Remove("Server");
 }


답변

나는 나의이 구성을 발견 web.config하는이었다에 대한 New Web Site...(A 반대로 비주얼 스튜디오에서 만든 New Project...)을. 이 질문에는 ASP.NET MVC 응용 프로그램이 관련이 없지만 여전히 옵션이라고 나와 있습니다.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <remove name="X-Powered-By" />
    </customHeaders>
   </httpProtocol>
</system.webServer>

업데이트 : 또한 Troy Hunt에는 Shhh 라는 제목의 기사가 있습니다. 이 헤더를 제거하는 자세한 단계와 헤더 및 기타 보안 구성을 스캔하기위한 ASafaWeb 도구 링크에 대한 응답 헤더가 너무 크게 말하지 않도록 하십시오 .


답변

.NET 코어

Program.cs 파일 내 에서 서버 헤더 를 제거하려면 다음 옵션을 추가하십시오.

.UseKestrel(opt => opt.AddServerHeader = false)

닷넷 코어 1의 경우 .UseKestrel () 호출 안에 옵션을 추가하십시오. 닷 넷 코어 2의 경우 UseStartup () 다음에 줄을 추가하십시오.

X-Powered-By 헤더 를 제거하려면 IIS에 배치 된 경우 web.config를 편집하고 system.webServer 태그 안에 다음 섹션을 추가하십시오.

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

.NET 4.5.2

global.asax 파일 에서 서버 헤더 를 제거하려면 다음을 추가하십시오.

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        string[] headers = { "Server", "X-AspNet-Version" };

        if (!Response.HeadersWritten)
        {
            Response.AddOnSendingHeaders((c) =>
            {
                if (c != null && c.Response != null && c.Response.Headers != null)
                {
                    foreach (string header in headers)
                    {
                        if (c.Response.Headers[header] != null)
                        {
                            c.Response.Headers.Remove(header);
                        }
                    }
                }
            });
        }

    }

.NET 4.5.2 이전

다음 c # 클래스를 프로젝트에 추가하십시오.

public class RemoveServerHeaderModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.PreSendRequestHeaders += OnPreSendRequestHeaders;
    }

    public void Dispose() { }

    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Headers.Remove("Server");
    }
}

그런 다음 web.config 내에 다음 <modules> 섹션을 추가하십시오.

<system.webServer>
    ....
 <modules>
    <add name="RemoveServerHeaderModule" type="MyNamespace.RemoveServerHeaderModule" />
 </modules>

그러나 하위 프로젝트 에서이 모듈을 찾을 수없는 문제가있었습니다. 재미 없어.

X-AspNetMvc-Version 헤더 제거

.NET 버전에 대해 ”X-AspNetMvc-Version ”태그를 제거하려면 ”web.config ”파일을 다음과 같이 수정하십시오.

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

믿을 수 없을 정도로 어렵게 만드는 Microsoft에 감사드립니다. 또는 전 세계의 IIS 및 MVC 설치를 추적 할 수 있도록 의도 한 것일 수도 있습니다 …


답변

IIS 7 에서 ASP.NET MVC 웹 응용 프로그램 클로킹에 설명 된대로 다음 구성 섹션을 web.config에 적용하여 X-AspNet-Version 헤더를 해제 할 수 있습니다.

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

Global.asax.cs를 다음과 같이 변경하여 X-AspNetMvc-Version 헤더를 제거하십시오.

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

사용자 정의 헤더에 설명 된대로 다음 구성 섹션을 web.config에 적용하여 “X-Powered-By”헤더를 제거 할 수 있습니다.

<system.webServer>
   <httpProtocol>
      <customHeaders>
         <clear />
      </customHeaders>
   </httpProtocol>
</system.webServer>

구성을 통해 “서버”응답 헤더를 쉽게 제거 할 수있는 방법은 없지만 IIS 7에서 ASP.NET MVC 웹 응용 프로그램 클로킹서버에서 서버를 제거하는 방법 HttpModule 설명 된대로 특정 HTTP 헤더를 제거하도록 구현할 수 있습니다. x-aspnet-version-x-aspnetmvc-version-and-x-powered-in-the-the-response-header-in-iis7 .


답변

그림과 같이 윈도우 Azure 웹 사이트에 표준 서버 헤더를 제거 페이지, 다음, 헤더를 제거 할 수 있습니다 :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
      </customHeaders>
    </httpProtocol>
    <security>
      <requestFiltering removeServerHeader="true"/>
    </security>
  </system.webServer>
  <system.web>
    <httpRuntime enableVersionHeader="false" />
  </system.web>
</configuration>

서버 헤더와 X 헤더가 제거됩니다.

이것은 Visual Studio 2015의 테스트에서 로컬로 작동했습니다.


답변

Asp.Net Core에서 다음과 같이 web.config 파일을 편집 할 수 있습니다.

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

Kestrel 옵션에서 서버 헤더를 제거 할 수 있습니다.

            .UseKestrel(c =>
            {
                // removes the server header
                c.AddServerHeader = false;
            })