2010-09-09 33 views

Trả lời

5

Nhận xét trong số Aristos link mang lại câu trả lời đúng cho Lý do.

Nó nén xuống MS không muốn dễ dàng cho phép mọi người sửa đổi giá trị này. Cho dù để tiếp thị hay các mục đích khác là mở để giải thích.

Một điều cần tránh khỏi thảo luận đó là sửa đổi tiêu đề máy chủ không hữu ích cho bất kỳ loại bảo mật nào. Có vô số cách để bạn có thể phát hiện chính xác loại phần mềm máy chủ web (và phiên bản) nào đang chạy.

Chúng tôi chỉ có một lý do để làm như vậy: để lưu byte. Trừ khi bạn đang chạy một trang lưu lượng truy cập rất cao, đây không phải là một mối quan tâm. Nếu bạn đang chạy một trang lưu lượng truy cập cao thì bạn có nhiều khả năng đã chạy một hoặc nhiều mô-đun tùy chỉnh.

+0

Trong khi loại bỏ nó gần như chắc chắn rơi vào lớp "Security Theater" chứ không phải là "Security Security", nó là rất bình thường để kiểm tra thâm nhập để yêu cầu tiêu đề không liên quan như thế này xác định cấu hình hệ thống cần xóa. –

+3

Tôi phát triển các trang web trên thiết bị di động, tôi đồng ý với lý lẽ bảo mật, nó thực sự không phải là bảo mật nhưng cho rằng việc xóa nó để tiết kiệm không gian có liên quan đến những khách hàng có băng thông bị dữ liệu không cần thiết ăn. Cho phép trở thành công dân tốt của thế giới được nối mạng và tôn trọng người dùng của chúng tôi và cơ sở hạ tầng mà chúng tôi phụ thuộc. –

+0

@NormanH: Tôi nghĩ bạn đã đạt được điểm tốt. – NotMe

2

Ví dụ này không thực sự xóa tiêu đề "máy chủ", chỉ cần viết một nội dung khác lên tiêu đề đó.

Tiêu đề tốt hơn là "IIS7 cách gửi tiêu đề http" máy chủ "tùy chỉnh". Đọc bài viết tương tự này http://blogs.technet.com/b/stefan_gossner/archive/2008/03/12/iis-7-how-to-send-a-custom-server-http-header.aspx

Bây giờ nếu bạn tự hỏi tại sao theo cách này, đây không phải là cách duy nhất, bạn có thể truy cập máy chủ web và chỉ xóa nó khỏi tiêu đề đầu.

Nếu bạn tự hỏi, tại sao sử dụng IHttpModule + PreSendRequestHeader, vì đây là cách bạn lấy tiêu đề ở phần đầu tiên và đặt đầu tiên "máy chủ" tiêu đề trước khi tôi làm điều đó.

Hy vọng trợ giúp này.

+0

Vâng, không. "Cách gửi tiêu đề http 'máy chủ' tùy chỉnh" không phải là những gì tôi đang tìm kiếm ... Tôi đã biết cách thực hiện điều đó. Những gì tôi muốn biết là tại sao nó là cần thiết để làm điều đó trong một HttpModule cho "Server" nhưng không cho các tiêu đề khác có thể được thêm/xóa thông qua web.config (''). –

+0

@David đây là một cái gì đó khác bạn hỏi (và tôi không chắc chắn để cung cấp cho câu trả lời tại thời điểm này), câu trả lời cho câu hỏi chính của bạn là điều này tôi đã viết. – Aristos

+0

trong câu hỏi tôi đã hỏi: "Tôi chỉ muốn biết tại sao cần phải xóa [tiêu đề 'Máy chủ'] theo cách này.'" Cảm ơn bạn đã trả lời! –

-1

Response.Headers.Set("Server", "My Awesome Server"); hoạt động tốt trong mã trang phía sau, miễn là hồ bơi ứng dụng của bạn được đặt thành "Chế độ đường ống tích hợp".

Về cơ bản, IPM đặc biệt cho mục đích có đường ống IIS được tích hợp với đường dẫn ASP.NET để cho phép loại điều này được thực hiện. Xem Mehrdad Afshari's Answer để thảo luận.

0

ý tưởng cơ bản của loại bỏ những tiêu đề như sau

  1. Vì lý do an ninh. nó sẽ không dễ dàng để xác định bởi kẻ tấn công về phần mềm (phiên bản) và máy chủ web đang sao lưu trang web.
  2. Nó giảm kích thước của dữ liệu do máy chủ kết thúc vào trình duyệt.

Read more about Inspecting Http Response Headers

0

Bạn cũng có thể trống rỗng, giá trị bằng cách thêm một outboundRule trong file web.config trong IIS 7+:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <outboundRules rewriteBeforeCache="true"> 
       <rule name="Remove Server header"> 
        <match serverVariable="RESPONSE_Server" pattern=".+" /> 
        <action type="Rewrite" value="" /> 
       </rule> 
      </outboundRules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
Các vấn đề liên quan