Herramientas OTP y la seguridad digital

En un mundo digital donde las contraseñas ya no son suficientes para proteger nuestras cuentas, las herramientas OTP (One-Time Password) se han convertido en una capa adicional esencial para mantener a salvo nuestra identidad, nuestros datos y nuestra privacidad.

Una OTP es una contraseña que solo se puede usar una vez, y que suele tener una validez de unos pocos segundos. Es un código numérico que se genera de forma automática y que sirve para verificar la identidad de un usuario cuando se accede a una cuenta o se realiza una operación sensible. Aunque existen varios tipos de OTP, el más común en el ámbito personal y empresarial es el TOTP (Time-based One-Time Password), que genera un nuevo código cada 30 segundos.

Este código no es generado de forma manual, ni se recibe por SMS (algo que puede ser interceptado). Lo genera una app de autenticación en el dispositivo del usuario, a partir de una clave secreta compartida cuando se activa la verificación en dos pasos (2FA) en la cuenta del usuario.

¿Por qué usar herramientas OTP?

Utilizar OTP como parte de un sistema de verificación en dos pasos (2FA) mejora radicalmente la seguridad de las cuentas, incluso si alguien averigua la contraseña principal. Este sistema de seguridad evita accesos no autorizados: Un atacante necesitaría también el código temporal generado por la app OTP, lo cual requiere acceso físico al dispositivo. Esto reduce, por ejemplo, el impacto del phishing: Aunque un atacante consiga la contraseña con técnicas de ingeniería social, no podrá acceder sin el código temporal.

Además, esta solución de seguridad no depende de la red móvil: A diferencia de los códigos enviados por SMS, una app OTP funciona sin necesidad de estar conectada a Internet.

Este sistema de seguridad ofrece compatibilidad con múltiples servicios: Plataformas como Google, GitHub, Microsoft, Dropbox, Amazon o incluso bancos ya ofrecen integración con autenticación OTP.

Diversidad en las herramientas

Hay muchas apps de autenticación disponibles: Google Authenticator, Microsoft Authenticator, Authy, 1Password, entre otras. Cada una tiene sus ventajas y limitaciones en cuanto a sincronización, respaldo o interfaz de usuario. Además, cada una de ellas ofrece distintos niveles de accesibilidad en su interfaz de usuario y limitaciones a la hora de importar y exportar los tokens de autenticación entre otros dispositivos y aplicaciones OTP. Por ejemplo, el proyecto Free OTP ofrece una solución de código libre que implementa los protocolos HOTP y TOTP garantizando la mayor compatibilidad con los distintos servicios de OTP.

Es aconsejable utilizar una herramienta en la que confiemos y que permita exportar e importar las claves que tengamos almacenadas ya que estas operaciones son necesarias cuando llega ese momento de cambiar de dispositivo de seguridad.

Problemas de accesibilidad

Junto a los posibles problemas de accesibilidad en la interfaz de usuario que pueda tener el cliente OTP que estemos utilizando, hay que mencionar que el proceso de autenticación puede presentar barreras de accesibilidad a algunas personas con discapacidad o poca soltura tecnológica.

El proceso consiste en copiar un número de 6 cifras desde una aplicación en nuestro teléfono móvil a una página web o una ventana de autenticación de usuario donde hay un campo numérico donde se nos solicita esa contraseña numérica. El problema es que tenemos menos de 30 segundos para completar este proceso.

Algunos clientes OTP incorporan la función de almacenar en el portapapeles la contraseña generada, evitando la necesidad de memorizar el número.

También si estamos utilizando el ecosistema de Apple, podemos copiar el número en nuestro iPhone y pegarlo desde el portapapeles del Mac gracias al servicio de interoperabilidad de Apple llamado Continuity.

Otra solución puede ser tener un cliente OTP también en nuestro equipo de escritorio o equipo portátil y así podemos obtener estas contraseñas OTP en nuestro dispositivo móvil o nuestro equipo de trabajo.

Code File Catcher: una herramienta para dar contexto a tus consultas a la IA

Muchas veces, cuando queremos pedir ayuda a una IA para depurar un fallo, revisar una estructura o mejorar un código, necesitamos enviar más que una simple función. Necesitamos compartir el contexto completo del proyecto: otros archivos, dependencias, configuraciones, etc.

Los entornos de desarrollo incluyen un navegador de archivos para moverte entre los distintos ficheros de un proyecto pero, en la mayoría de los casos, el navegador de archivos incluye alguna barrera de dificultad o la cantidad de ficheros es bastante grande lo que dificulta la tarea a los desarrolladores con discapacidad o con poca destreza a la hora de moverse en su entorno de desarrollo. Con Code File Catcher puedes hacer eso fácilmente.

Code File Catcher es una aplicación sencilla pero poderosa que te permite seleccionar una carpeta de tu disco, elegir los tipos de archivos de código que quieres incluir, y obtener automáticamente un texto con todo el contenido de esos archivos perfectamente organizado y listo para copiar o exportar.

Esto resulta especialmente útil si estás trabajando con asistentes de inteligencia artificial como ChatGPT, Gemini o similares, que requieren el contexto completo del código para ofrecer respuestas precisas y útiles.

Entre las distintas operaciones que puede realizar actualmente están: recopila todos los archivos fuente relevantes de un proyecto o carpeta, muestra un texto estructurado con el nombre del archivo y su contenido y puede copiar ese texto al portapapeles o exportarlo como archivo `.txt`.

El proyecto está disponible bajo una licencia libre en GitHub. Puedes consultarlo, usarlo, modificarlo y, si lo deseas, contribuir con mejoras o sugerencias. El proyecto está abierto a colaboraciones, especialmente si pueden ayudar a que la herramienta sea aún más útil para más personas.

Puedes encontrar el código del proyecto y participar en él en el repositorio de Code File Catcher en Github.

Cómo Utilizar Contrast Checker para Validar la accesibilidad en las combinaciones de colores

Una de las barreras de accesibilidad más habituales en contenidos de la Web es el bajo contraste de color entre el texto y el fondo.
Para solucionar estas barreras de accesibilidad existen herramientas como el Contrast Checker de WebAIM que permite comprobar si las combinaciones de colores cumplen con los estándares de accesibilidad establecidos por las Web Content Accessibility Guidelines (WCAG).

¿Qué es Contrast checker?

Contrast Checker es una herramienta en línea gratuita proporcionada por WebAIM (Web Accessibility in Mind) que permite verificar si una combinación de colores cumple con los niveles de contraste requeridos por las WCAG buscando que los textos sean legibles para personas con baja visión y daltonismo.

Este verificador evalúa la diferencia entre el color de primer plano (texto) y el color de fondo para determinar si cumple con los niveles de conformidad de AA y AAA definidos en las WCAG.

¿Cómo se utiliza Contrast checker?

La herramienta muestra un formulario con dos campos principales que representan el color del texto y el color de fondo. Estos colores son identificados como Foreground Color para el color en primer plano y background color para el color de fondo.

Se puede introducir el código hexadecimal de un color o utilizar la herramienta de selector de color para buscar el color en la paleta de colores del sistema.

Una vez ingresados los colores, la herramienta calculará automáticamente el ratio de contraste y mostrará los resultados en diferentes categorías.

  • Small Text (Texto pequeño): indica si la combinación de colores pasa los estándares para texto de tamaño normal.
  • Large Text (Texto grande): evalúa si la combinación cumple para textos de al menos 18px en regular o 14px en negrita.
  • Graphics and UI Components: verifica si los colores cumplen para elementos como botones o iconos.

El ratio de contraste se expresa como un número (ejemplo: 4.5:1). Para que la combinación de colores sea accesible, debe cumplir al menos con estos valores:

  • AA (Mínimo) ≥ 4.5:1 ≥ 3:1
  • AAA (Óptimo) ≥ 7:1 ≥ 4.5:1

Si la combinación de colores no pasa la prueba, se mostrará en rojo junto con un mensaje indicando que el contraste es insuficiente.

Detección de barreras de accesibilidad con TAW

El Test de Accesibilidad Web (TAW) es una herramienta en línea que ayuda a evaluar la accesibilidad de sitios web según las directrices del estándar WCAG (Web Content Accessibility Guidelines). Diseñada para identificar problemas de accesibilidad, TAW es especialmente útil para desarrolladores, diseñadores y responsables de contenido que desean crear experiencias inclusivas para todos los usuarios, incluidas personas con discapacidad.

Al igual que Wave, TAW es una herramienta de validación automática de barreras de accesibilidad web.

Esta herramienta evalúa criterios como:
• Texto alternativo en imágenes.
• Contraste de colores.
• Navegación mediante teclado.
• Uso correcto de etiquetas HTML y roles ARIA.

¿Cómo utilizar TAW?

Para utilizar TAW debemos visitar su sitio web oficial. Allí encontraremos un formulario en el que introducir la URL de la página que queremos revisar. Además, dentro de las opciones podremos elegir entre nivel A, nivel AA y nivel AAA. Tras introducir la dirección de la página que queremos evaluar debemos pulsar el botón analizar.

Tras unos segundos se nos cargará la página de resultados.

A diferencia de Wave y otras herramientas automáticas TAW no dispone de widget para revisar páginas en local. Además TAW utiliza WCAG 2.1 frente a otras herramientas que poco a poco van incorporando WCAG 2.2.

Comparando herramientas

Si realizamos una evaluación con TAW y Wave podremos comprobar que los informes de resultados son parecidos pero no exactamente iguales. Esto se debe a que los algoritmos de detección de barreras utilizados por TAW y Wave no son iguales aunque utilicen los criterios e interpretaciones definidos en WCAG.

TAW proporciona la información en español y portugués por lo que se hace más sencillo de consultar para personas que desarrollen o diseñen en estas lenguas.

Lo ideal es poder utilizar estas dos herramientas para procurar que todas las barreras posibles sean solucionadas. Siempre recordando que las herramientas automáticas de validación de barreras de accesibilidad no son 100% efectivas ni fiables.

Detección y validación de barreras de accesibilidad con herramientas automáticas

La accesibilidad web es fundamental para garantizar que todas las personas, independientemente de sus habilidades o discapacidades, puedan acceder y utilizar los contenidos en línea.
Para los desarrolladores y diseñadores las herramientas automáticas de validación de la accesibilidad ofrecen una manera eficiente de identificar problemas de accesibilidad en sus sitios web. Sin embargo, este tipo de herramientas automáticas poseen ventajas y limitaciones que deben ser conocidas por estos diseñadores y desarrolladores.

Algunas cuestiones, como el significado contextual del contenido, la calidad de los textos alternativos o la utilidad de la navegación, requieren juicio humano. Esto implica que algunos criterios de éxito de WCAG deben ser validados por una persona ya que hoy por hoy las herramientas automáticas carecen del conocimiento y la identificación del contexto de un contenido para poder identificar si existe una barrera de accesibilidad o no. Por ejemplo, una herramienta automática puede dar por válida la siguiente descripción para una imagen que se utiliza como botón cancelar: ‘iconCancel12.jpg’, o indicar que hay problemas por usar ARIA aunque se esté utilizando de forma apropiada.

Estas herramientas tampoco pueden apreciar posibles problemas de usabilidad o inconsistencias entre los mecanismos de navegación de varias páginas.

Unido a todo esto se ha de indicar que muchas de las herramientas automáticas de validación de barreras de accesibilidad no detectan los cambios dinámicos realizados mediante Javascript en los contenidos por lo que en muchos casos de webApps desarrolladas con ReactJS o Angular pueden incorporar multitud de barreras de accesibilidad indetectables para este tipo de herramientas.

Los resultados de las evaluaciones realizadas por estas herramientas necesitan ser interpretados y aplicados por personas con conocimientos básicos en accesibilidad y desarrollo web. Sin este conocimiento, las correcciones pueden no ser efectivas o incluso empeorar la accesibilidad. Con esto se indica que es falsa la afirmación de que gracias a estas herramientas el desarrollador no requiere ningún conocimiento de accesibilidad web.

A pesar de todo esto las herramientas automáticas de validación de la accesibilidad son necesarias para ayudar a la detección temprana de muchas barreras de accesibilidad y deberían ser de uso obligatorio para los desarrolladores y diseñadores de contenido.

Introducción a Markdown

Markdown es un lenguaje de marcado ligero diseñado para facilitar la escritura de texto formateado de manera sencilla y sin distracciones. Su propósito principal es convertir texto plano en HTML sin necesidad de aprender complejas etiquetas o reglas de maquetado.
Este formato de texto se ha convertido en una herramienta esencial para desarrolladores, escritores y creadores de contenido por su simplicidad, versatilidad y beneficios, especialmente en términos de accesibilidad y fácil mantenimiento.

Markdown fue creado por Aaron Swartz y John Gruber en 2004 con la intención de que los documentos fueran fáciles de escribir y leer en su forma original, y a la vez, que pudieran convertirse fácilmente en HTML para la web. Su estructura se basa en texto plano, lo que significa que cualquier persona puede leer y escribir Markdown con un editor de texto básico.
Markdown es ampliamente utilizado en blogs, documentación técnica, ficheros README de proyectos en GitHub, foros y mensajes en algunas redes sociales.

Dentro de las ventajas de Markdown se destacan su simplicidad y su portabilidad.
Markdown utiliza una sintaxis mínima que es fácil de aprender. No necesitas herramientas sofisticadas ni experiencia previa para comenzar a escribir.
Los archivos Markdown son simplemente texto plano, lo que significa que son extremadamente ligeros y se pueden abrir en cualquier dispositivo o sistema operativo.
Además de todo esto se ha de indicar que Markdown se puede convertir fácilmente a formatos más ricos como HTML, PDF, DOCX o incluso ePub, usando herramientas automáticas.

Cómo Escribir con Markdown

La sintaxis de Markdown es extremadamente sencilla, principalmente se utilizan algunos caracteres especiales al comienzo de línea o para indicar el comienzo y la finalización de un bloque marcado semánticamente.

Texto en Negrita y Cursiva

Para marcar en negrita un texto se usa doble asterisco.
Para marcar en  cursiva, se usa un solo asterisco.

Ejemplos:

**Este texto está en negrita**
*Este texto está en cursiva*

Encabezados

Los encabezados se crean utilizando el símbolo # al comienzo de una línea. El número de # define el nivel del encabezado (de 1 a 6).

Ejemplo:

# Encabezado de nivel 1
## Encabezado de nivel 2
### Encabezado de nivel 3

Enlaces

Los enlaces se crean utilizando corchetes para el texto y paréntesis para la URL.

Ejemplo:

Visita mi blog [Programar a ciegas](https://programaraciegas.net) para leer más artículos como este.

Listas

Se pueden crear listas ordenadas o desordenadas utilizando un marcador al comienzo de línea.

• Listas no ordenadas: Utiliza guiones (-) o asteriscos (*).
• Listas ordenadas: Usa números seguidos de un punto (1., 2., etc.).

Ejemplos:

- Elemento 1 de una lista desordenada
- Elemento 2 de una lista desordenada

1. Primer elemento de una lista ordenada
2. Segundo elemento de una lista ordenada

Imágenes

El formato que se utiliza para mostrar imágenes es similar al formato empleado para los enlaces, pero con un signo de exclamación al principio. Ejemplo:

![Texto alternativo que describe la imagen](ruta/a/la/imagen.jpg)

Bloques de Código

Para marcar bloques de código, se utiliza tres acentos graves («`) antes y después del código.

Ejemplo:

```
func saludo() {
print("¡Hola, Markdown!")
}


```

Markdown admite otras marcas para resaltar citas, maquetar datos tabulares y otros elementos semánticos.