| Artículos | 01 JUN 2006

Autenticación de usuarios

Tags: Histórico
Curso de seguridad (IV)
Gonzalo Alvarez.
En este curso de seguridad en aplicaciones web en cinco entregas se explicar&#225;n algunos de los conceptos m&#225;s importantes para protegerse frente a los ataques m&#225;s frecuentes y las amenazas m&#225;s graves.<br>Conocer la identidad de los visitantes a un sitio web puede resultar crucial en muchas aplicaciones. Este mes repasamos las t&#233;cnicas m&#225;s utilizadas para autenticar a los usuarios, discutiendo sus fortalezas y debilidades relativas.<br><br>Nivel de dificultad: Medio<br>Objetivo: Asegurar la identidad de los visitantes al sitio web<br>Herramientas: Las herramientas incluidas con el software del servidor web<br><br>Toda aplicaci&#243;n web que desee restringir el acceso a los usuarios se enfrenta al problema de c&#243;mo decidir cu&#225;l es la identidad del visitante y qu&#233; acciones le est&#225;n permitidas. Se trata por tanto de obtener alguna certeza acerca de la identidad digital del visitante, para lo cual &#233;ste deber&#225; presentar una serie de evidencias acerca de s&#237; mismo. Este proceso consta de tres pasos: 1) Identificaci&#243;n, durante la cual el sujeto anuncia su identidad; 2) Autenticaci&#243;n, durante la cual se validan las credenciales presentadas por el sujeto para cerciorarse de su identidad; y finalmente, 3) Autorizaci&#243;n, mediante la cual se comprueban los privilegios del usuario autenticado para decidir a qu&#233; recursos puede acceder. <br>Tradicionalmente, las distintas formas de autenticar a los usuarios que intentan acceder a un recurso o servicio han girado en torno a tres m&#233;todos: 1) Restringir el acceso en funci&#243;n de algo que el usuario conoce, como por ejemplo una contrase&#241;a o un PIN; 2) en funci&#243;n de algo que el usuario posee, como una tarjeta inteligente o una de banda magn&#233;tica, un certificado digital o un token; o 3) en funci&#243;n de algo que el usuario es, esto es, de sus caracter&#237;sticas fisiol&#243;gicas, como el iris de su ojo o su huella dactilar, lo que se conoce como identificaci&#243;n biom&#233;trica. Estas modalidades de autenticaci&#243;n pueden combinarse: por ejemplo, posesi&#243;n de una tarjeta de cr&#233;dito y conocimiento de un PIN, como ocurre a la hora de sacar dinero de los cajeros, lo que se denomina autenticaci&#243;n multifactor. <br>En esta entrega se tratar&#225;n los dos primeros m&#233;todos, pas&#225;ndose repaso a la autenticaci&#243;n mediante contrase&#241;as a trav&#233;s de formularios y de la autenticaci&#243;n b&#225;sica, as&#237; como la autenticaci&#243;n mediante certificados digitales.<br><br>Autenticaci&#243;n mediante formularios<br>La autenticaci&#243;n mediante formularios web presenta varias ventajas frente a otras formas de autenticaci&#243;n. Por un lado, al recogerse las credenciales a trav&#233;s del formulario de una p&#225;gina web, la interfaz de usuario es totalmente personalizable. En segundo lugar, no existen restricciones respecto al lugar de almacenamiento de las credenciales de los usuarios: un archivo de configuraci&#243;n del servidor, un archivo de texto o XML, una tabla en una base de datos, cualquier almac&#233;n que se pueda imaginar. En tercer lugar, resultan ideales para escenarios en Internet con millones de usuarios potenciales y funciona con cualquier tipo de navegador. Por &#250;ltimo, es muy sencillo incorporar una funci&#243;n de desconexi&#243;n de los usuarios o cierre de sesi&#243;n. <br>Esta forma de autenticaci&#243;n tambi&#233;n presenta sus limitaciones, que hay que combatir. En primer lugar, y m&#225;s importante, las credenciales viajan en claro, por lo que su transporte debe protegerse mediante SSL (v&#233;ase el mes anterior). En segundo lugar, gestionar las sesiones mediante testigos de sesi&#243;n puede resultar una tarea complicada, tanto que de hecho ser&#225; tratada en el pr&#243;ximo mes. Por &#250;ltimo, siempre que no se utilicen las herramientas proporcionadas por las plataformas de desarrollo (.NET, J2EE), se obliga al desarrollador de la aplicaci&#243;n web a escribir c&#243;digo de seguridad para el que generalmente no est&#225; preparado.<br>Los pasos necesarios para habilitar la autenticaci&#243;n mediante formularios dentro de una aplicaci&#243;n .NET o J2EE son muy sencillos: 1) En primer lugar, debe configurarse adecuadamente el archivo de configuraci&#243;n de la aplicaci&#243;n para indicar que utilizar&#225; autenticaci&#243;n mediante formularios; 2) a continuaci&#243;n, debe configurarse el acceso a los directorios a proteger; y 3) por &#250;ltimo, debe crearse una p&#225;gina de inicio de sesi&#243;n, en la que los usuarios puedan introducir sus credenciales.<br>En el caso de ASP.NET, el archivo de configuraci&#243;n se llama Web.Config, al que se le a&#241;ade una secci&#243;n authentication de la siguiente manera:<br><br>&lt;authentication mode=&#8221;Forms&#8221;&gt;<br> &lt;forms<br> name=&#8221;Usuario&#8221;<br> loginUrl=&#8221;/Tienda/Entrar.aspx&#8221;<br> protection=&#8221;All&#8221;<br> timeout=&#8221;10&#8221;<br> path=&#8221;/Tienda/&#8221; /&gt;<br>&lt;/authentication&gt;<br><br>donde name es el nombre de la cookie que contiene el ticket de autenticaci&#243;n, siendo el valor predeterminado .ASPXAUTH; loginUrl es la direcci&#243;n de la p&#225;gina de inicio de sesi&#243;n a la que ser&#225; redirigido un usuario sin autenticar que intente acceder a una p&#225;gina protegida, siendo el nombre predeterminado Login.aspx; protection indica el nivel de protecci&#243;n utilizado para la informaci&#243;n de la cookie, a elegir entre None (ning&#250;n tipo de protecci&#243;n), Validation (s&#243;lo se valida que la cookie no ha sido modificada), Encryption (la cookie est&#225; cifrada) o All (cifrado y validaci&#243;n de los contenidos de la cookie), siendo el valor predeterminado All; path representa la ruta de acceso utilizada por la cookie, siendo el valor predeterminado /; y timeout es el tiempo de caducidad de las cookies de sesi&#243;n, que no persisten en el disco duro al cerrar la sesi&#243;n con el navegador, siendo el valor predeterminado de 30 minutos.<br>A continuaci&#243;n, se debe prohibir el acceso a todos los usuarios que no se hayan autenticado. Para ello se emplea la secci&#243;n authorization, que puede contener dos tipos de elementos: 1) allow: Permite el acceso a los usuarios especificados por su nombre, separados por comas (,), us&#225;ndose opcionalmente el s&#237;mbolo * para denotar todos los usuarios y el s&#237;mbolo ? para los usuarios an&#243;nimos (sin autenticar); y 2) deny: Deniega el acceso a los usuarios especificados, us&#225;ndose la misma convenci&#243;n de s&#237;mbolos.<br>Si lo que se pretende es denegar el acceso a los usuarios no autenticados a un directorio particular, se puede crear un archivo Web.Config en dicha carpeta, con la siguiente secci&#243;n authorization:<br>&lt;authorization&gt;<br> &lt;deny users=&#8221;?&#8221; /&gt;<br>&lt;/authorization&gt;<br><br>En el caso de J2EE, se modifica el archivo web.xml a&#241;adiendo una secci&#243;n login-config para indicar que se utilizar&#225; autenticaci&#243;n mediante formularios, as&#237; como la ruta de acceso de la p&#225;gina de petici&#243;n de credenciales y de la p&#225;gina de error con el mens

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información