Autenticación

LIBP-0253 (Libro de pautas)

Se deben tener en cuenta las siguientes recomendaciones para garantizar la autenticación segura de los usuarios

Pautas

TítuloCarácter
Autenticación negativaObligatoria
Cabecera de referenciaNo Recomendada
Nombre de usuario en las consultasRecomendada
Número de registros devueltosObligatoria
Pérdida de autenticación sobre funciones significativasObligatoria
Uso de POST en los procesos de autenticaciónObligatoria
Limitar el número de autenticaciones fallidasObligatoria
Retardo tras autenticación fallidaRecomendada
Autenticaciones en el clienteNo Recomendada
Tokens en el clienteNo Recomendada
Asociación de tokens de autorización con identificador de sesiónObligatoria
Envío de tokensObligatoria
Firma electrónicaRecomendada
Uso de certificados digitalesRecomendada
Uso de DNIeRecomendada
Sistemas anti robotsRecomendada
GeolocalizaciónRecomendada
Sistemas de coordenadasRecomendada
Uso de Single Sign-On de escritorioRecomendada

Autenticación negativa

Utilizar la autenticación negativa

A la hora de comprobar la autenticación del usuario, debe partirse del caso en el que, por defecto, el intento de autenticación es incorrecto, debiendo confirmarse en el proceso de autenticación la corrección del intento. Mediante este enfoque, en caso de producirse algún tipo de error durante la autenticación, siempre se negará el acceso.

Cabecera de referencia

Evitar la utilización de cabeceras de referencia

En una cabecera de referencia se almacena información acerca de la ubicación previa de la que vino el navegador. En la mayor parte de los casos, el uso de esta cabecera de referencia no es recomendable, ya que es muy fácil que su información sea modificada o falsificada por los atacantes. No puede asignarse confianza a su valor, y puede ser difícil de limpiar y usar correctamente. Los programas que desplieguen el contenido de cabeceras de referencia, como un analizador de registros Web, deben protegerse cuidadosamente contra XSS y otros ataques de inyección HTML.

Si la aplicación tiene que usar cabecera de referencia, deberá únicamente hacerlo con un mecanismo de defensa en profundidad, y no tratar de limpiar su contenido, solo rechazarlo si no es correcto. Todo código tiene errores, así que debe minimizarse la cantidad de código que trata con la cabecera de referencia.

Nombre de usuario en las consultas

Usar sólo el nombre de usuario como clave para las consultas

Se debe evitar la búsqueda por varias claves dado que, de esta forma, aumentamos las posibilidades de que una de estas claves sea vulnerable.

Se recomienda que siempre que haya que hacer una búsqueda se haga con el mínimo número de claves posibles. Es recomendable protegerse de esta situación utilizando sólo el nombre de usuario como clave para las consultas.

Número de registros devueltos

Verificar que sólo se devuelve un registro

En el proceso de autenticación, cuando se consultan los datos del usuario que está realizando el intento de acceso, debe comprobarse que sólo se devuelve un registro o ninguno, no permitiendo el acceso si se recupera más de un registro

Pérdida de autenticación sobre funciones significativas

Comprobar la autenticación sobre las funciones significativas

La pérdida de autenticación sobre funciones significativas sucede cuando el software no realiza ninguna comprobación de autenticación al acceder a una funcionalidad significativa (que requiere una identificación del usuario) o que consume una cantidad significativa de recursos.

Las consecuencias de no realizar esta comprobación puede ir desde la ejecución de funcionalidades restringidas, como la lectura o modificación de datos sensibles, el acceso a la funcionalidad privilegiada administrativa o incluso la denegación del servicio debido a la gran cantidad de recursos que el usuario malintencionado puede demandar.

Se deben controlar que no existen funciones significativas de negocio fuera del marco de la autenticación.

Uso de POST en los procesos de autenticación

Utilizar siempre métodos POST en los procesos de autenticación.

Si elegimos emplear un método GET, todas las variables se enviarán por la dirección html y serán visibles desde la URL. Es decir, cuando se recargue la página web, al haber enviado el formulario, podrán obtenerse los valores de las variables. Esto no es aceptable si estamos hablando del proceso de autenticación, por lo que es recomendable utilizar métodos POST,  que se encargan de ocultar los valores del envío proporcionando así una mayor seguridad.

Limitar el número de autenticaciones fallidas

Limitar el número de accesos fallidos consecutivos

Limitar el número de fallos consecutivos permitidos en una autenticación es una protección bastante eficaz para prevenir los ataques de fuerza bruta.

Hay que tener especial cuidado del entorno en el que se aplica, ya que este mecanismo de seguridad puede ser utilizado para realizar ataques de denegación de servicio contra otros usuarios. Sólo podría aplicarse en contexto donde el usuario pueda contactar directamente con el administrador, como por ejemplo una empresa, organismo de la Junta, etc

Retardo tras autenticación fallida

Introducir un retardo tras un intento de autenticación fallido

Introduciendo un retardo que obligue a que pase un tiempo determinado antes de volver a intentar una autenticación se reducen las posibilidades de éxito de los ataques de fuerza bruta.

Autenticaciones en el cliente

No validar la autenticación o autorización en el lado cliente

No llevar a cabo ningún tipo de autenticación o autorización en el lado cliente mediante cabeceras, cookies, campos de formulario escondidos o argumentos en la dirección URL.

Tokens en el cliente

Desconfiar de tokens de autorización o autenticación en el lado del cliente

Los tokens de autorización o autenticación que se encuentren en el lado del cliente pueden ser fácilmente modificados con fines maliciosos. Por tanto, estos tokens no deben ser considerados como confiables.

Asociación de tokens de autorización con identificador de sesión

Asociar el identificador de sesión con los tokens de autenticación, flags o estados.

Cuando la aplicación confirme que un usuario se autentica, asocie el identificador de sesión con los tokens de autenticación, flags o estados.

Envío de tokens

No enviar tokens a través de medios no seguros.

No enviar ningún tipo de token de autenticación o autorización en cabeceras, cookies, campos de formulario ocultos o como argumentos de la dirección URL.

Firma electrónica

Usar la firma digital para firmar documentos telemáticamente.

La firma electrónica va mucho más allá de la firma manuscrita en cuanto a su potencial y a las capacidades que posee. Es una herramienta universal que puede ser utilizada en diversos ámbitos y escenarios. Además, la firma electrónica es otro de los elementos básicos que necesitamos para poder realizar un trámite de forma completamente electrónica. La mayoría de trámites, transacciones y operaciones que realizamos en Internet no precisan de nuestra firma.

Para que los trámites en los que es necesaria la firma también estén disponibles a través de Internet, es fundamental que ese último paso, donde llevamos a cabo la firma de un documento, podamos realizarlo también de forma electrónica.

Desde el momento en que un documento es firmado, adquiere un conjunto de propiedades

Uso de certificados digitales

Usar certificados digitales para evitar suplantaciones de identidad de usuarios.

Se trata de disponer de un documento oficial, expedido por una entidad reconocida y acreditada, que nos permita identificarnos y demostrar nuestra identidad.

Un certificado electrónico puede emitirlo en principio cualquier organización que disponga de la infraestructura necesaria, pero si esta entidad no está acreditada como emisor de certificados electrónicos o CA (Certification Authority), los certificados que emita no serán reconocidos y, por tanto, no podremos acreditar una identidad reconocida con ellos

El certificado digital permite autentificar y garantizar la confidencialidad de las comunicaciones entre ciudadanos, empresas u otras instituciones públicas a través de las redes abiertas de comunicación. Se recomienda el uso de certificados digitales para garantizar que únicamente el usuario que se identifica puede acceder a la información, evitando así las suplantaciones.

Uso de DNIe

Usar el DNIe como mecanismo de autenticación para evitar suplantaciones de identidad de usuarios.

El DNIe además de su uso tradicional, nos permite acceder a los nuevos servicios de la Sociedad de la Información, ampliando nuestras capacidades de actuar a distancia con las Administraciones Públicas, con las empresas y con otros ciudadanos. Gracias a que incorpora un chip, capaz de guardar y procesar internamente información de forma segura, se pueden recudir los casos de suplantación de identidad y de fraude.

Sistemas anti robots

Garantizan que quien envía el formulario es una persona y no una máquina

Los captchas se utilizan en los envíos de formularios e intentan garantizar que quien los envían son verdaderamente personas, en lugar de máquinas.

Geolocalización

Controlar desde donde se suele conectar el usuario.

Es un mecanismo que registra las localizaciones desde las que se conecta el usuario. En caso de que se acceda desde alguna dirección no registrada, el sistema alertará al usuario y preguntará si desea registrar la dirección. En algunos casos podrá solicitar información personal al usuario para tratar de garantizar la identidad de la persona que esta accediendo. Además notificará posteriormente mediante correo electrónico del registro o el acceso desde esa posición.

Sistemas de coordenadas

Solicitar al usuario que introduzca el valor de una coordenada de una tarjeta cada vez que quiera acceder a un recurso crítico

La Tarjeta de Coordenadas contiene una matriz o serie de números única para cada usuario.

A la hora de acceder a un recurso crítico protegido por una Tarjeta de Coordenadas el sistema requerirá el número que se encuentra impreso en alguna celda.

Uso de Single Sign-On de escritorio

Utilizar Single Sing-On de escritorio como mecanismo de autenticación

El Single-Sign-On (SSO) de escritorio permite al usuario acceder a las aplicaciones que estén configuradas, identificándose una única vez para acceder a las aplicaciones.  El SSO es una solución que permite simplificar el uso diario de los sistemas y aplicaciones por parte de los usuarios, simplifica la administración de credenciales y permite incrementar los niveles de seguridad.