В целях повышения безопасности нашего API и сайта я удаляю заголовки, которые утечки информации о том, что сайт работает.
Пример перед снятием заголовков:
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687
Web.config:
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
</customHeaders>
</httpProtocol>
Global.asax.cs:
protected void Application_PreSendRequestHeaders() {
Response.Headers.Remove("Server");
Response.Headers.Remove("X-AspNet-Version");
Response.Headers.Remove("X-AspNetMvc-Version");
Response.AddHeader("Strict-Transport-Security", "max-age=300");
Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
}
И после этого все обращения к сайту и API возвращают более безопасные заголовки, например:
HTTP/1.1 500 Internal Server Error
Cache-Control: private
Content-Type: text/html; charset=utf-8
Date: Wed, 05 Jun 2013 00:27:54 GMT
Content-Length: 3687
До сих пор так хорошо. Тем не менее, я заметил в Firebug, что если вы посмотрите на статический контент (например, load.gif), он по-прежнему содержит заголовок сервера.
HTTP/1.1 304 Not Modified
Cache-Control: no-cache
Accept-Ranges: bytes
Etag: "a3f2a35bdf45ce1:0"
Server: Microsoft-IIS/8.0
Date: Tue, 25 Jun 2013 18:33:16 GMT
Я предполагаю, что это как-то обрабатывается IIS, но не может найти нигде, чтобы удалить этот заголовок. Я попытался добавить:
<remove name="Server" />
в раздел httpProtocol/customHeaders в Web.config, как упоминалось выше. Я также попытался войти в раздел заголовков HTTP-ответов диспетчера IIS и добавить пару поддельных имен/значений для заголовка сервера. В обоих случаях он все равно возвращает
Server: Microsoft-IIS/8.0
при загрузке любых изображений, CSS или JS. Где/что мне нужно, чтобы установить что-то, чтобы исправить это?