IIS 網站屬性「HTTP 標頭」頁籤允許新增自訂回應標頭。本文解釋其運作機制、瀏覽器與用戶端程式的處理差異、程式碼讀取範例,並列出安全相關標頭建議。
X-Powered-By: ASP.NET、Author: chenxizhang,瀏覽器不解釋、不顯示,但用戶端程式可讀取利用。static void GetResponse()
{
var request = (HttpWebRequest)HttpWebRequest.Create("https://localhost/faq.htm");
request.Credentials = CredentialCache.DefaultNetworkCredentials;
using (var response = (HttpWebResponse)request.GetResponse())
{
Console.WriteLine("標頭資訊:");
for (int i = 0; i < response.Headers.Count; i++)
Console.WriteLine($"Key: {response.Headers.Keys[i]}, Value: {response.Headers[i]}");
using (var reader = new StreamReader(response.GetResponseStream()))
Console.WriteLine("回應主體:\n" + reader.ReadToEnd());
}
}
輸出將包含 IIS 設定的自訂標頭 (如 Author: chenxizhang)。
| 標頭 | 用途 | 建議值 |
|---|---|---|
X-Frame-Options | 防點擊劫持 | DENY 或 SAMEORIGIN |
X-Content-Type-Options | 防 MIME 嗅探 | nosniff |
Strict-Transport-Security | 強制 HTTPS (HSTS) | max-age=31536000; includeSubDomains |
Content-Security-Policy | CSP 防 XSS | 依專案策略制定 |
Referrer-Policy | 控制 Referer 傳送 | strict-origin-when-cross-origin |
Permissions-Policy | 功能授權 (攝像頭、麥克風等) | 最小權限原則 |
可在 IIS 「HTTP 標頭」頁籤新增,或在 web.config <system.webServer><httpProtocol><customHeaders> 設定,亦可在 Application_BeginRequest 動態加入。
X-Powered-By:洩露技術棧。Server:洩露 IIS 版本。X-AspNet-Version:洩露 .NET 版本 (httpRuntime enableVersionHeader="false")。X-AspNetMvc-Version:MVC 專案移除 (MvcHandler.DisableMvcResponseHeader = true)。定期掃描回應標頭 (如 curl -I、SecurityHeaders.com),確保安全標頭生效、敏感標頭已移除。