내가 작업중 인 MVC 응용 프로그램의 각 페이지는 다음 HTTP 헤더를 응답으로 설정합니다.
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
X-AspNetMvc-Version: 2.0
이것들이 보이지 않게하려면 어떻게해야합니까?
답변
X-Powered-By
IIS의 사용자 지정 헤더입니다. 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;
})