Necesito eliminar los encabezados excesivos (principalmente para pasar las pruebas de penetración). He dedicado tiempo a buscar soluciones que implican ejecutar UrlScan, pero son engorrosas ya que UrlScan debe instalarse cada vez que se inicia una instancia de Azure .
Debe haber una buena solución para Azure que no implique la implementación de instaladores desde startup.cmd.
Entiendo que los encabezados de respuesta se agregan en diferentes lugares :
- Servidor : agregado por IIS.
- X-AspNet-Version : agregado por System.Web.dll en el momento de Flush en la clase HttpResponse
- X-AspNetMvc-Version : Agregado por MvcHandler en System.Web.dll.
- X-Powered-By : agregado por IIS
¿Hay alguna forma de configurar (a través de web.config, etc.?) IIS7 para eliminar / ocultar / deshabilitar los encabezados de respuesta HTTP para evitar la advertencia "Encabezados excesivos" en asafaweb.com , sin crear un módulo IIS o implementar instaladores que necesiten ejecutar cada vez que se inicia una instancia de Azure?
fuente
MSDN publicó este artículo sobre cómo ocultar encabezados en sitios web de Azure. Ahora puede ocultar el servidor de web.config agregando una entrada a system.webServer
<security> <requestFiltering removeServerHeader ="true" /> </security>
Sin embargo, VS fruncirá el ceño ante lo anterior como inválido. El enlace anterior tiene un código en forma de imágenes, difícil de encontrar. La versión MVC todavía está oculta en el inicio de la aplicación como se indicó anteriormente, lo mismo para la versión x-powered-by y .Net.
fuente
También hay un paquete en NuGet que lo ayuda a lograr esto a través de algunas líneas de configuración y sin cambios en el código: NWebsec. Los documentos sobre la eliminación de encabezados de versión se pueden encontrar aquí: https://github.com/NWebsec/NWebsec/wiki/Suppressing-version-headers
Se muestra aquí: http://www.nwebsec.com/HttpHeaders/VersionHeaders (en Azure)
Descargo de responsabilidad: soy el desarrollador del proyecto.
fuente
La respuesta de Nick Evans es perfecta, pero ...
Si elimina estos encabezados por motivos de seguridad , no olvide cambiar el
ASP.NET Session coockie name
! Porque es más fácil adivinar el idioma utilizado o la versión del servidor cuando ves esto:Para cambiar el nombre de la cookie: (sea creativo)
<system.web> <sessionState cookieName="PHPSESSID" /> </system.web>
fuente
Sumando las respuestas anteriores de @ giveme5minutes y @AKhooli en lo que respecta a los sitios web de Azure, además de algunos otros elementos que el escáner quiere ver, estos son los cambios que hice para que ASafaWeb esté feliz con un sitio de Azure.
Todavía se queja de que la cookie de encabezado de afinidad de Azure no es solo https, pero la afinidad es el tipo de cookie que desea que se reproduzca de todos modos, ¿verdad?
<system.web> <compilation debug="false"> <httpRuntime enableVersionHeader="false" /> <httpCookies httpOnlyCookies="true" requireSSL="true" /> <customErrors mode="RemoteOnly" defaultRedirect="~/Error.aspx" /> </system.web> <system.webServer> <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="DENY" /> <remove name="X-Powered-By" /> </customHeaders> </httpProtocol> <security> <!--removes Azure headers--> <requestFiltering removeServerHeader="true" /> </security> </system.webServer>
fuente