2010-06-07 71 views
25

¿Alguien sabe exactamente cómo configurar HTTPONLY en las cookies de sesión ASP clásicas?Configuración de HTTPONLY para la cookie de la sesión de Asp clásica

Esto es lo último que se ha marcado en un análisis de vulnerabilidad y necesita solucionarse lo antes posible, por lo que cualquier ayuda es apreciada.

~~~ A MÁS INFORMACIÓN PEQUEÑO EN MI PROBLEMA ~~~

Puede alguien por favor me ayude con esto?

Necesito saber cómo establecer HTTPONLY en la cookie ASPSESSION creada por defecto desde ASP & IIS.

Esta es la cookie creada automáticamente por el servidor para todas las páginas asp.

Si es necesario, puedo configurar HTTPONLY en todas las cookies del sitio.

Cualquier ayuda sobre cómo hacer esto sería enormemente apreciada.

, gracias

Gracias Elliott

+2

Esta es una buena pregunta. ¿Has descubierto cómo hacerlo? –

+0

¿Cuál es la solución que tienes hasta ahora? – Dhananjay

Respuesta

2
Response.AddHeader "Set-Cookie", "CookieName=CookieValue; path=/; HttpOnly" 

Fuente: http://www.asp101.com/tips/index.asp?id=160

+4

Debido a que ASP & IIS crea esta cookie de manera predeterminada, no tenemos la oportunidad de agregar esto de forma programática. Me pregunto si es algún otro lugar en otro lugar ??? He actualizado el KeepASPCookieSecure en IIS Metabase.xml, me pregunto si esto podría ser un tipo similar de solución? –

+0

Tenga en cuenta que agregar la cookie con "addheader" no agregará la cookie a la colección request.cookies() en ASP en la misma solicitud. La cookie solo será visible en el alcance de request.cookies después de una navegación de ida y vuelta. Esto difiere del comando regular response.cookies(), que hará que la cookie esté disponible en el alcance de request.cookies dentro de la misma solicitud. –

0

This page tiene mucha información que es relevante para su problema.

.NET 1.1 no agrega HttpOnly porque aún no se ha inventado.

Si su aplicación se ejecutará en .NET 2.0 (moví varios sitios ASP clásicos a 2.0 prácticamente sin cambios) HttpOnly está configurado de manera predeterminada.

Si le leo bien, puede obtener la cookie de sesión y anexar ; HttpOnly;. Se da un ejemplo de Java:

String sessionid = request.getSession().getId(); 
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; HttpOnly"); 

Por último, se sugiere:

si los cambios de código son factibles, cortafuegos de aplicación Web se puede utilizar para agregar HttpOnly a las cookies de sesión

Edited para agregar: a aquellos que piensan que migrar a .NET (que puede acomodar la mayoría del código ASP clásico sin cambios) es un cambio demasiado drástico para obtener una función tan pequeña, mi experiencia con los filtros ISAPI es que ellos también puede ser un gran problema, y ​​en algunas situaciones comunes (alojamiento compartido) no puede usarlas en absoluto.

+5

Disculpe si sus votos hacia abajo no estaban claros, pero cambiar su sitio completo de ASP clásico a .NET parece una tarea bastante importante solo para obtener cookies de sesión HttpOnly. Creo que ese es el motivo de los votos abajo. –

10

Microsoft incluye un ejemplo usando un filtro ISAPI a todas las cookies salientes: http://msdn.microsoft.com/en-us/library/ms972826

o la reescritura de URL se podría utilizar http://forums.iis.net/p/1168473/1946312.aspx

<rewrite> 
     <outboundRules> 
      <rule name="Add HttpOnly" preCondition="No HttpOnly"> 
       <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" /> 
       <action type="Rewrite" value="{R:0}; HttpOnly" /> 
       <conditions> 
       </conditions> 
      </rule> 
      <preConditions> 
       <preCondition name="No HttpOnly"> 
        <add input="{RESPONSE_Set_Cookie}" pattern="." /> 
        <add input="{RESPONSE_Set_Cookie}" pattern="; HttpOnly" negate="true" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
+8

Mientras esto funciona, tengo que avisar que si alguna de sus páginas Classic ASP tiene Response.Buffer = false, la página será pura basura. – Jason

+0

Cualquiera que tenga problemas para implementar este código, primero debe habilitar la Reescritura de URL para IIS [http://www.iis.net/downloads/microsoft/url-rewrite] – MarceloBarbosa

+0

Para mí, el indicador HTTP en las herramientas de desarrollo está establecido en verdadero , pero después de un segundo, la bandera se eliminará. ¿Tiene esto algo que ver con el uso de HTTPS? –

2

Si tiene IIS7 +, debe asegurarse de que esté instalado el módulo de reescritura de URL. Puede instalarlo con el instalador de la plataforma web. El instalador de la plataforma web se puede encontrar en la vista de características de su sitio web. Necesita ejecutar el Administrador de IIS como administrador.

Run IIS As Administratro

Haga clic en el Instalador de plataforma web en las características de su sitio web para ver: que el producto servidor de reescritura de URL se instala

Web Platform Installer

Maker. Si no es así, instálelo.

Url Rewrite Server Product

Con la reescritura de URL del servidor, el producto instalado, puede utilizar la característica de reescritura de URL en su sitio web para agregar una regla para agregar HttpOnly para las cookies de identificación de sesión.

URL Rewrite Feature

enter image description here

Add HttpOnly Outbound Rule

Debe ver, si no existe ya, un archivo web.config creado para su sitio ASP. que tendrá el siguiente contenido:

enter image description here

Si utiliza Firebug en Firefox para inspeccionar las cookies, ahora debería ver el HttpOnly conjunto del indicador:

enter image description here

+1

Bien explicado ... ¡¡¡Gran trabajo !! –

Cuestiones relacionadas