Xóa tiêu đề phản hồi máy chủ IIS7


107

Có cách nào để xóa tiêu đề phản hồi "Máy chủ" khỏi IIS7 không? Có một số bài báo cho thấy rằng sử dụng HttpModules chúng ta có thể đạt được điều tương tự. Điều này sẽ hữu ích nếu chúng tôi không có quyền quản trị đối với máy chủ. Ngoài ra, tôi không muốn viết bộ lọc ISAPI.

Tôi có quyền quản trị đối với máy chủ của mình. Vì vậy, tôi không muốn làm những việc trên. Vì vậy, xin vui lòng giúp tôi làm như vậy.


Câu trả lời:


111

Thêm cái này vào global.asax.cs của bạn:

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

11
Không biết tại sao câu trả lời mô-đun http cao hơn thế này, cái này là dễ dàng hơn nhiều
jjxtra

2
Bạn có thể nhận được một NullReferenceExceptiontrong Cassini nếu bạn dựa vào HttpContext.Current. Bài đăng trên blog này chỉ ra cách làm như vậy trong khi tránh phá vỡ hỗ trợ của Cassini, nếu điều đó quan trọng với bạn.
Owen Blacker

49
@PsychoDad công trình này cho ASP.NET chỉ yêu cầu, chứ không phải cho các tập tin tĩnh như .css và .js
Max Toro

1
Để loại bỏ tiêu đề MVC, bạn có thể thực hiện điều này MvcHandler.DisableMvcResponseHeader = true;
ProVega

7
Không phải là một ý kiến ​​hay khi sử dụng PreSendRequestHeaderstrong một lớp thực hiện IHttpModulehoặc Global.asax. Tôi đã chứng kiến ​​sự kiện đóng băng ứng dụng trên máy chủ khi tải căng thẳng. Sự BeginRequestkiện sẽ hoạt động để thực hiện thay đổi tiêu đề phản hồi. Xem hanselman.com/blog/ChecklistWhatNOTToDoInASPNET.aspx .
Dmitry S.

77

Trong IIS7, bạn phải sử dụng mô-đun HTTP. Xây dựng phần sau làm thư viện lớp trong VS:

namespace StrongNamespace.HttpModules
{
  public class CustomHeaderModule : IHttpModule
  { 
    public void Init(HttpApplication context)
    {
      context.PreSendRequestHeaders += OnPreSendRequestHeaders;
    } 

    public void Dispose() { } 

    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
      HttpContext.Current.Response.Headers.Set("Server", "Box of Bolts");
    }
  }
}

Sau đó, thêm phần sau vào web.config của bạn hoặc bạn định cấu hình nó trong IIS (nếu bạn định cấu hình trong IIS, lắp ráp phải nằm trong GAC).

<configuration>
  <system.webServer>
    <modules>
      <add name="CustomHeaderModule"
       type="StrongNamespace.HttpModules.CustomHeaderModule" />
    </modules>
  </system.webServer>
</configuration>

Tuyệt vời, tôi cũng có thể điều chỉnh điều này để xóa tiêu đề ETag trên trang máy chủ của mình.
devstuff

Điều này gây ra lỗi thời gian chạy trong máy chủ casini ... / ASP.NET Dev
UpTheCreek

2
@UpTheCreek Máy chủ nhà phát triển ASP.Net (Cassini) sẽ không thích mã đó; bài viết trên blog này có một giải pháp cho nó, mặc dù - bạn cần kiểm tra rằng HttpApplication, những HttpRequest, các HttpContext, và HttpResponsekhông null, cũng như kiểm tra mà HttpRequest.IsLocalfalse.
Owen Blacker

2
Vì việc sửa đổi tiêu đề trong PreSendRequestHeaderscó thể gây ra sự cố với HttpCacheModule , bạn nên sử dụng một cái gì đó như PostReleaseRequestStatethay thế.
Eirik H

5
Mô-đun không được gọi khi IIS gửi tiêu đề 304 Không sửa đổi cho các tệp tĩnh (css / less / images / etc) vì điều này không đạt đến đường ống ASP.NET, vì vậy trong tình huống này Máy chủ: Microsoft IIS / 7.5 vẫn được hiển thị
Jano

42

Với Mô-đun ghi lại URL Phiên bản 2.0 cho IIS (UrlRewrite) được bật, trong phần cấu hình <configuration><system.webServer><rewrite>thêm quy tắc gửi đi:

<outboundRules>
  <rule name="Remove RESPONSE_Server" >
    <match serverVariable="RESPONSE_Server" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

11
Lưu ý rằng điều này chỉ làm trống tiêu đề Máy chủ, nó không xóa nó.
Nick Evans

Xin lỗi vì sự thiếu hiểu biết nhưng tôi nên thêm điều này vào phần nào ?! Tôi đã thử thêm nó bên trong <system.webServer>
Vignesh Subramanian

1
Cảm ơn! Hoạt động trong IIS 8.5, điều này thật dễ dàng. Tôi không có trình soạn thảo văn bản nhưng bạn có thể dễ dàng sử dụng GUI. Tên phải là RESPONSE_Server, không chỉ là Server (đây là nơi tôi đã thất bại lúc đầu).
Louis Matthijssen

điều này là đủ tốt nếu bạn có một ứng dụng non-ASP.Net do bạn không thể xóa tiêu đề máy chủ với mã đề cập
mhesabi

4
@vignesh đây là một số subnodes cấu hình UrlRewrite. Bạn phải đặt chúng dưới một rewritenút trong system.webServer. Hãy cẩn thận, điều này sẽ làm hỏng trang web của bạn nếu UrlRewrite không được cài đặt trên máy chủ. Và tốt hơn hết bạn nên sử dụng bảng điều khiển cấu hình IIS trước để kiểm tra cách nó ghi các nút cấu hình đó.
Frédéric

36

Scott Mitchell cung cấp trong một bài đăng blog các giải pháp để loại bỏ các tiêu đề không cần thiết .

Như đã nói ở đây trong các câu trả lời khác, đối với Servertiêu đề, có giải pháp mô-đun http hoặc giải pháp web.config cho IIS 10+ hoặc bạn có thể sử dụng URLRewrite thay thế cho việc điền vào nó .

Giải pháp thiết thực nhất cho thiết lập (IIS 10 +) cập nhật đang sử dụng removeServerHeadertrong web.config:

<system.webServer>
  ...
  <security>
    <requestFiltering removeServerHeader="true" />
  </security>
  ...
</system.webServer>

Đối với X-AspNet-VersionX-AspNetMvc-Version, anh ấy cung cấp một cách tốt hơn là loại bỏ chúng trên mỗi phản hồi: đơn giản là hoàn toàn không tạo ra chúng.

Sử dụng enableVersionHeaderđể tắt X-AspNet-Version, trong web.config

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

Sử dụng MvcHandler.DisableMvcResponseHeadertrong sự kiện .Net Application_Start để tắtX-AspNetMvc-Version

MvcHandler.DisableMvcResponseHeader = true;

Và cuối cùng, xóa trong cấu hình IIS X-Powered-Bytiêu đề tùy chỉnh trong web.config.

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

Hãy lưu ý, nếu bạn có ARR (Định tuyến yêu cầu ứng dụng), nó cũng sẽ thêm ARR của chính nó X-Powered-By, điều này sẽ không bị xóa bởi cài đặt tiêu đề tùy chỉnh. Cái này phải được xóa thông qua cấu hình IIS Manager, Editor trên IIS root (không phải trên site): đi tới system.webServer/proxynút và đặt arrResponseHeaderthành false. Sau một IISReset, nó được tính đến.
(Tôi đã tìm thấy cái này ở đây , ngoại trừ bài đăng này nói về cách cấu hình IIS 6.0 cũ.)

Đừng quên rằng giải pháp theo mã ứng dụng không áp dụng theo mặc định cho tiêu đề được tạo trên nội dung tĩnh (bạn có thể kích hoạt runAllManagedModulesForAllRequestsđể thay đổi điều đó, nhưng nó khiến tất cả các yêu cầu chạy đường ống .Net). Nó không phải là một vấn đề X-AspNetMvc-Versionvì nó không được thêm vào nội dung tĩnh (ít nhất là nếu yêu cầu tĩnh không chạy trong đường ống .Net).

Lưu ý phụ: khi mục đích là che giấu công nghệ đã qua sử dụng, bạn cũng nên thay đổi tên cookie .Net chuẩn ( .ASPXAUTHnếu kích hoạt xác thực hình thức (sử dụng namethuộc tính trên formsthẻ trong web.config), ASP.NET_SessionId(sử dụng <sessionState cookieName="yourName" />trong system.webthẻ dưới web.config ), __RequestVerificationToken(thay đổi nó bằng mã với AntiForgeryConfig.CookieName, nhưng tiếc là không áp dụng cho đầu vào ẩn mà hệ thống này tạo ra trong html)).


18

Trên thực tế, các mô-đun được mã hóa và các ví dụ Global.asax hiển thị ở trên chỉ hoạt động cho các yêu cầu hợp lệ.

Ví dụ: thêm <vào cuối URL của bạn và bạn sẽ nhận được trang "Yêu cầu không hợp lệ" vẫn hiển thị tiêu đề máy chủ. Rất nhiều nhà phát triển bỏ qua điều này.

Cài đặt đăng ký được hiển thị cũng không hoạt động. URLScan là cách DUY NHẤT để loại bỏ tiêu đề "máy chủ" (ít nhất là trong IIS 7.5).


Nó làm việc cho tôi với các mô-đun mã hóa (thêm vào web.config) ngay cả trên một yêu cầu xấu;) Trong global.asax nó không thực sự làm việc (ví dụ như các file tĩnh, vv)
kapsiR

Hãy hy vọng bạn vẫn bật xác thực yêu cầu.
Dan Ware

1
có ai có giải pháp thay thế urlscan cho IIS 8+ không?
herostwist

Có một giải pháp làm việc ít nhất là trong IIS10 +: stackoverflow.com/a/53222967/1671558
Ilya Chernomordik

16

Hoặc thêm vào web.config:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-AspNet-Version" />
            <remove name="X-AspNetMvc-Version" />
            <remove name="X-Powered-By" />
            <!-- <remove name="Server" />  this one doesn't work -->
        </customHeaders>
    </httpProtocol>
</system.webServer>

3
Phương pháp này không xóa tiêu đề 'Máy chủ'. Những người khác bị loại bỏ.
Pure.Krome

Bạn có thể loại bỏ X-Powered-By trong cấu hình tiêu đề Phản hồi ở cấp máy chủ.
Snowburnt

1
Tôi không biết có trường hợp nào mà cách này loại bỏ X-AspNet-VersionX-AspNetMvc-Versiontiêu đề không. Những gì tôi biết là cách này không phải lúc nào cũng hoạt động (nếu nó từng hoạt động). Xem câu trả lời @Frederic để biết cách xóa chúng đáng tin cậy hơn.
TheBlueSky

Hiện có một cách trong IIS10 + để xóa tiêu đề máy chủ: stackoverflow.com/a/53222946/1671558
Ilya Chernomordik

14

web.configThiết lập này hoạt động để loại bỏ tất cả các tiêu đề không cần thiết khỏi phản hồi ASP.NET (ít nhất là bắt đầu từ IIS 10):

<!--Removes version headers from response -->
<httpRuntime enableVersionHeader="false" />

<httpProtocol>
  <customHeaders>
    <!--Removes X-Powered-By header from response -->
    <clear />
  </customHeaders>
</httpProtocol>

<security>
  <!--Removes Server header from response-->
  <requestFiltering removeServerHeader ="true" />
</security>

Xin lưu ý rằng điều này ẩn tất cả các tiêu đề cho "ứng dụng", cũng như tất cả các cách tiếp cận khác. Ví dụ, nếu bạn truy cập một số trang mặc định hoặc một trang lỗi do chính IIS hoặc ASP.NET tạo ra bên ngoài ứng dụng của bạn, các quy tắc này sẽ không áp dụng. Vì vậy, lý tưởng nhất là chúng nên ở cấp cơ sở trong IIS và ngưỡng cửa đó có thể để lại một số phản hồi lỗi cho chính IIS.

PS Có một lỗi trong IIS 10 khiến nó đôi khi hiển thị tiêu đề máy chủ ngay cả với cấu hình chính xác. Nó sẽ được sửa ngay bây giờ, nhưng IIS / Windows phải được cập nhật.


12

Bổ sung cho câu trả lời Viết lại URL , đây là XML hoàn chỉnh choweb.config

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="Remove RESPONSE_Server" >
        <match serverVariable="RESPONSE_Server" pattern=".+" />
        <action type="Rewrite" value="Company name" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

Viết lại URL


Điều này có xóa tất cả các phiên bản IIS và ASP khỏi hacker không
aggie

1
Việc sửa chữa trên đang làm việc một cách chính xác cho pages.But web cho hình ảnh / biểu tượng nếu 500 Internal Server Error xảy ra nó hiển thị Server: Microsoft-IIS / 7.5 thay vì value.Can bạn vui lòng giúp tôi về vấn đề này
ravithejag

11

Để xóa Server:tiêu đề, hãy truy cập Global.asax, tìm / tạo Application_PreSendRequestHeaderssự kiện và thêm một dòng như sau (cảm ơn BKblog này, điều này cũng sẽ không bị lỗi trên Cassini / local dev):

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    // Remove the "Server" HTTP Header from response
    HttpApplication app = sender as HttpApplication;
    if (null != app && null != app.Request && !app.Request.IsLocal &&
        null != app.Context && null != app.Context.Response)
    {
        NameValueCollection headers = app.Context.Response.Headers;
        if (null != headers)
        {
            headers.Remove("Server");
        }
    }
}

Nếu bạn muốn có một giải pháp hoàn chỉnh để xóa tất cả các tiêu đề liên quan trên Azure / IIS7 và cũng hoạt động với Cassini, hãy xem liên kết này , cho biết cách tốt nhất để tắt các tiêu đề này mà không cần sử dụng HttpModules hoặc URLScan.


9

Nếu bạn chỉ muốn xóa tiêu đề, bạn có thể sử dụng phiên bản rút gọn của câu trả lời lukiffer:

using System.Web;

namespace Site
{
    public sealed class HideServerHeaderModule : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders +=
            (sender, e) => HttpContext.Current.Response.Headers.Remove("Server");
        }
    }
}

Và sau đó trong Web.config:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="CustomHeaderModule" type="Site.HideServerHeaderModule" />
  </modules>
</system.webServer>

1
Điều này là thích hợp nhất vì các tài nguyên như css / js sẽ không có tiêu đề Máy chủ, nó sẽ chuyển từ máy chủ sang máy chủ mà không cần cấu hình và tiêu đề phản hồi Máy chủ sẽ không trống mà sẽ không được gửi.
Adam Caviness

Tôi đã thấy các nhận xét rằng runAllManagedModulesForAllRequests = "true" sẽ làm chậm ứng dụng của bạn và không được khuyến nghị. Thay vào đó, người ta có thể sử dụng urlrewrite module outboundRules để xóa giá trị máy chủ cũng cho các tệp tĩnh. britishdeveloper.co.uk/2010/06/…
Juri

5

Hãy thử đặt HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\DisableServerHeadermục đăng ký thành một REG_DWORDtrong số 1.


Gặp phải một tình huống kỳ lạ với máy chủ của chúng tôi, nơi cài đặt đăng ký này dường như là thay đổi duy nhất hoạt động trên tất cả các hệ điều hành (W2K8, W2K3) mà chúng tôi đang sử dụng, cho cả IIS6 và IIS7.
jerhewet

2
Thật thất vọng, điều này không tạo ra bất kỳ sự khác biệt nào đối với tôi, ngay cả sau khi khởi động lại máy ảo. Chúng tôi đang chạy IIS 7.5 trên Windows Server 2008 R2 Standard, "Phiên bản 6.1 (Bản dựng 7601: Gói Dịch vụ 1)". Tương tự, OnPreSendRequestHeaderstrình xử lý sự kiện của tôi (xem ở trên) không bao giờ kích hoạt, vì một số lý do.
Owen Blacker

3
Thật không may là khóa registry dường như không làm việc trên IIS 7.5
Andrew Csontos

4

UrlScan cũng có thể xóa tiêu đề máy chủ bằng cách sử dụng AlternateServerName=under [options].


2

Theo dõi câu trả lời của eddiegroves , tùy thuộc vào phiên bản của URLScan, thay vào đó bạn có thể thích RemoveServerHeader=1dưới hơn [options].

Tôi không chắc tùy chọn này được thêm vào phiên bản URLScan nào, nhưng nó đã có sẵn trong phiên bản 2.5 trở lên.


2

Tôi đã tìm thấy một bài báo giải thích lý do tại sao chúng ta cần chỉnh sửa Registry và sử dụng một công cụ như UrlScan để thiết lập điều này trong IIS đúng cách. Tôi đã theo dõi nó trên máy chủ của chúng tôi và nó hoạt động: http://blogs.msdn.com/b/varunm/archive/2013/04/23/remove-unwworthy-http-response-headers.aspx . Nếu bạn chỉ sử dụng UrlScan nhưng không thực hiện thay đổi sổ đăng ký, trong thời gian bạn dừng World Wide Publishing Service, máy chủ của bạn sẽ trả về phản hồi http máy chủ từ tệp HTTP.sys. Ngoài ra, đây là những lỗi thường gặp khi sử dụng công cụ UrlScan: http://msdn.microsoft.com/en-us/library/ff648552.aspx#ht_urlscan_008


2
Vui lòng đăng mã của bạn trên Stack Overflow. Liên kết có thể thay đổi và phá vỡ, do đó, mã niêm yết có nhiều hữu ích hơn
ngớ ngẩn Philosopher

2

Trong IIS 10, chúng tôi sử dụng một giải pháp tương tự như cách tiếp cận của Drew, tức là:

using System;
using System.Web;

namespace Common.Web.Modules.Http
{
    /// <summary>
    /// Sets custom headers in all requests (e.g. "Server" header) or simply remove some.
    /// </summary>
    public class CustomHeaderModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        /// <summary>
        /// Event handler that implements the desired behavior for the PreSendRequestHeaders event,
        /// that occurs just before ASP.NET sends HTTP headers to the client.
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            //HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Set("Server", "MyServer");
        }
    }
}

Và rõ ràng là thêm một tham chiếu đến dll đó trong (các) dự án của bạn và cả mô-đun trong (các) cấu hình bạn muốn:

<system.webServer>
    <modules>
      <!--Use http module to remove/customize IIS "Server" header-->
      <add name="CustomHeaderModule" type="Common.Web.Modules.Http.CustomHeaderModule" />
    </modules>
</system.webServer>

LƯU Ý QUAN TRỌNG 1: Giải pháp này cần một nhóm ứng dụng được đặt là tích hợp;

LƯU Ý QUAN TRỌNG 2: Tất cả các phản hồi trong ứng dụng web sẽ bị ảnh hưởng bởi điều này (bao gồm css và js);


1

Tôi đã nghiên cứu điều này và phương pháp URLRewrite hoạt động tốt. Dường như không thể tìm thấy sự thay đổi được viết sẵn ở bất kỳ đâu. Tôi đã viết điều này tương thích với PowerShell v2 trở lên và đã thử nghiệm nó trên IIS 7.5.

# Add Allowed Server Variable
    Add-WebConfiguration /system.webServer/rewrite/allowedServerVariables -atIndex 0 -value @{name="RESPONSE_SERVER"}
# Rule Name
    $ruleName = "Remove Server Response Header"
# Add outbound IIS Rewrite Rule
    Add-WebConfigurationProperty -pspath "iis:\" -filter "system.webServer/rewrite/outboundrules" -name "." -value @{name=$ruleName; stopProcessing='False'}
#Set Properties of newly created outbound rule 
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "serverVariable" -value "RESPONSE_SERVER"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "pattern" -value ".*"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/action" -name "type" -value "Rewrite"

1

Bạn có thể thêm mã bên dưới vào tệp Global.asax.cs

    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
    }

1

Giải pháp được đề xuất ở trên kết hợp đã hiệu quả với tôi với những thay đổi sau. Ở đây tôi đăng kịch bản và giải pháp của mình.

Đối với tôi, tôi muốn xóa các tiêu đề sau:

  • Người phục vụ
  • X-Powered-By
  • Phiên bản X-AspNet
  • Phiên bản X-AspNetMvc

Tôi đã thêm những thứ này vào global.asax của mình:

<%@ Application Language="C#" %>
<script runat="server">
    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
        Response.Headers.Remove("X-Powered-By");
        Response.Headers.Remove("X-AspNet-Version");
        Response.Headers.Remove("X-AspNetMvc-Version");
    }
</script>

Sự kiện trên không được kích hoạt, vì vậy tôi đã thêm theo dõi vào web.config thì sự kiện đó hoạt động.

<modules runAllManagedModulesForAllRequests="true" />

và để xóa tiêu đề phiên bản, tôi cũng đã thêm phần sau vào web.config:

<httpRuntime enableVersionHeader="false" />

Những thay đổi trong web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    <system.web>
        <httpRuntime enableVersionHeader="false" />
    </system.web>
</configuration>

Hy vọng nó giúp!


0

Tôi đã thử tất cả những thứ ở đây và trên một số chủ đề tràn ngăn xếp tương tự khác.

Tôi bị treo một chút vì tôi quên xóa bộ nhớ cache của trình duyệt sau khi thực hiện các thay đổi cấu hình. Nếu bạn không làm điều đó và tệp nằm trong bộ nhớ cache cục bộ của bạn, nó sẽ phân phát nó trở lại với bạn với các tiêu đề ban đầu (duh).

Tôi đã làm cho nó gần như hoạt động bằng cách loại bỏ runAllManagedModulesForAllRequests:

<modules runAllManagedModulesForAllRequests="true">

Điều này đã loại bỏ các tiêu đề không liên quan khỏi hầu hết các tệp tĩnh nhưng tôi vẫn nhận được tiêu đề "Máy chủ" trên một số tệp tĩnh trong dự án WebAPI của mình một cách lung tung.

Cuối cùng tôi đã tìm thấy và áp dụng giải pháp này và bây giờ tất cả các tiêu đề không mong muốn đã biến mất:

https://www.dionach.com/blog/easily-remove-unwnking-http-headers-in-iis-70-to-85

thảo luận về mã của anh ấy ở đây:

https://github.com/Dionach/StripHeaders/releases/tag/v1.0.5

Đây là mô-đun Native-Code. Nó có thể loại bỏ tiêu đề Máy chủ, không chỉ bỏ trống giá trị. Theo mặc định, nó loại bỏ:

  • Người phục vụ
  • X-Powered-By
  • Phiên bản X-Aspnet
  • Máy chủ: Microsoft-HTTPAPI / 2.0 - sẽ được trả về nếu "yêu cầu không được chuyển tới IIS"

-1

IIS 7.5 và các phiên bản có thể mới hơn có văn bản tiêu đề được lưu trữ trong iiscore.dll

Sử dụng trình chỉnh sửa hex, tìm chuỗi và từ "Máy chủ" 53 65 72 76 65 72sau nó và thay thế chúng bằng byte rỗng. Trong IIS 7.5, nó trông như thế này:

4D 69 63 72 6F 73 6F 66 74 2D 49 49 53 2F 37 2E 35 00 00 00 53 65 72 76 65 72 

Không giống như một số phương pháp khác, điều này không dẫn đến hình phạt về hiệu suất. Tiêu đề cũng bị xóa khỏi tất cả các yêu cầu, ngay cả lỗi nội bộ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.