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 Server
tiê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 removeServerHeader
trong web.config:
<system.webServer>
...
<security>
<requestFiltering removeServerHeader="true" />
</security>
...
</system.webServer>
Đối với X-AspNet-Version
và X-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.DisableMvcResponseHeader
trong 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-By
tiê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/proxy
nút và đặt arrResponseHeader
thà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-Version
vì 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 ( .ASPXAUTH
nếu kích hoạt xác thực hình thức (sử dụng name
thuộc tính trên forms
thẻ trong web.config), ASP.NET_SessionId
(sử dụng <sessionState cookieName="yourName" />
trong system.web
thẻ 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)).