2010-05-25 21 views
5

Tengo un conjunto de pruebas C# Selenium que necesitan eliminar una cookie que tiene el indicador HttpOnly establecido.¿Hay alguna manera de eliminar una cookie HttpOnly de las pruebas de C# Selenium?

Desafortunadamente, los comandos DefaultSelenium.GetCookie() y DefaultSelenium.DeleteCookie() no pueden acceder a la cookie, porque tiene configurado ese distintivo HttpOnly. Lo he confirmado quitando la bandera a mano y comprobando que las llamadas posteriores a cualquiera de esos métodos puedan manipular la cookie en cuestión.

¿Hay alguna otra forma de hacerlo a través del controlador de cliente Selenium .NET?

Todas las ideas son bienvenidas!

Respuesta

4

Como no pude hacer esto a través del controlador del cliente, tuve que encontrar un método alternativo. Afortunadamente, la aplicación web bajo prueba tiene una selección de páginas de prueba que permiten la interacción con la cookie de sesión (siendo la cookie HttpOnly a la que estaba intentando acceder) y así pude lograr mi objetivo automatizando esas páginas.

Para cualquier otra persona que encuentre este problema, hay una buena SO answer here acerca de cómo se quema HttpOnly en ASP.NET.

Además, this SO answer señala cómo HttpOnly se puede manipular a través de la aplicación web.config, con la advertencia de que solo se puede activar, no apagar.

Cualquier persona dispuesta a modificar su aplicación para fines de prueba debe consultar this workaround, básicamente alterando el método Session_Start en Global.asax para quitar el indicador HttpOnly para que esté accesible para el script del cliente. Sin embargo, este tipo de solución solo se debe utilizar en un entorno de prueba, ya que abre el agujero de seguridad que HttpOnly fue introducido para cerrar, es decir, una vulnerabilidad XSS. Jeff Atwood escribió una buena publicación en el blog al respecto here.

+0

Gracias Ben, me ha ahorrado mucho tiempo. –

Cuestiones relacionadas