Una cookie o galleta es una pequeña porción de información
enviada por un sitio o servidor web
y almacenada en el navegador del usuario.
Las principales funciones o utilidades de las cookies son:
-
Gestión de Sesiones: de esta manera es posible diferenciar
los usuarios que acceden a una aplicación web,
permitíendole al servidor llevar un control de los mismos
y en consecuencia actuar de diferente forma dependiendo de estos.
-
Personalización: con las cookies es posible almacenar
la información sobre los hábitos de navegación del usuario,
preferencias, temas y otras configuraciones.
Esto con el fin de ofrecer una funcionalidad
acorde a los gustos específicos de cada usuario.
-
Rastreo: esto se hace para guardar
y analizar el comportamiento del usuario,
de tal manera que sea posible crear y mantener estadísticas de uso
o también para crear perfiles de usuarios
que luego se usarán para orientar campañas publicitarias.
Para la primera función, gestión de sesiones,
se crean las cookies de sesión
al momento en que un usuario inicia
o realiza el proceso de login ante una aplicación web,
de igual manera, cuando el usuario cierra
o destruye la sesión,
las cookies creadas se eliminan.
No obstante, las cookies se pueden utilizar
para realizar ataques contra la seguridad
del sitio web y de los usuarios que lo frecuentan.
El principal ataque que aprovecha
el uso de las cookies es el robo de las mismas,
es decir, obtener el valor de la cookie de sesión
de otro usuario para suplantarlo
e ingresar a la aplicación web como él.
La manera más común de lograr dicho robo
es mediante un ataque XSS.
Dicho ataque permite a una tercera persona
inyectar en páginas web visitadas por el usuario
código JavaScript u otro lenguaje similar.
Entonces, para evitar el robo de cookies mediante este ataque,
se recomienda establecer el atributo HttpOnly
a las cookies de sesión.
Este atributo lo que hace es indicarle al navegador
que una cookie no puede ser consultada nunca por medio de JavaScript
y que sólo debe usarse cuando se vaya a utilizar en una petición HTTP.
-
Para servidores de aplicación
compatibles con Java EE 6 (Servlet 3.0),
tal como GlassFish, la opción HttpOnly
se puede configurar desde el archivo web.xml.
web.xml
<web-app>
<session-config>
<cookie-config>
<!--
Specifies whether any session tracking cookies created
by this web application will be marked as HttpOnly
-->
<http-only>true</http-only>
</cookie-config>
</session-config>
</web-app>
-
Para habilitar el uso de HttpOnly en Apache Tomcat
se debe usar el contexto de las aplicaciones web.
<Context useHttpOnly="true">
...
</Context>
-
Para el servidor de aplicaciones Adobe Coldfusion 9.0.
<cfcomponent>
<cfset this.sessionmanagement = true>
<cfset this.setclientcookies = false>
<cffunction name="onSessionStart">
<cfcookie name="CFID" value="#session.cfid#" httponly="true">
<cfcookie name="CFTOKEN" value="#session.cftoken#" httponly="true">
</cffunction>
<cfcomponent>