← Volver al Atlas de caracteres
Cultura digital

Unicode invisible: espacios, enlaces y riesgos ocultos

No todo carácter invisible es un hueco. Descubre qué hacen los espacios de ancho cero, los enlaces, los espacios indivisibles y los controles de dirección.

Microscopio de caracteres

Edita la muestra para ver los puntos de código que forman lo que aparece en pantalla.

El primer par A–B contiene U+200B ZERO WIDTH SPACE; el segundo, U+2060 WORD JOINER. Parecen iguales, pero proponen comportamientos opuestos al partir una línea.

7 puntos de código7 unidades visibles
  1. U+0041
  2. U+200B
  3. U+0042
  4. U+0020
  5. U+0041
  6. U+2060
  7. U+0042

Un carácter invisible no es necesariamente un carácter vacío. Puede marcar un límite de palabra, impedir un salto de línea, unir formas, escoger una presentación o cambiar la dirección visual del texto.

Dos cadenas idénticas a la vista pueden contener instrucciones diferentes.

«Espacio» describe trabajos distintos

U+0020 SPACE es el espacio del teclado. Unicode contiene otros caracteres espaciadores:

  • U+00A0 NO-BREAK SPACE tiene anchura, pero evita un salto;
  • U+2009 THIN SPACE crea un hueco tipográfico más estrecho;
  • U+3000 IDEOGRAPHIC SPACE ocupa una celda de ancho completo;
  • U+2800 BRAILLE PATTERN BLANK es un carácter braille sin puntos, no un espacio general.

Todos pueden parecer vacíos, pero difieren en anchura, salto de línea, semántica y accesibilidad. Sustituir uno por otro solo porque «parece en blanco» produce diseños imprevisibles.

Los caracteres sin anchura también dan instrucciones

  • U+200B ZERO WIDTH SPACE ofrece un punto de salto sin hueco visible.
  • U+2060 WORD JOINER impide un salto sin añadir anchura.
  • U+200C ZERO WIDTH NON-JOINER puede evitar uniones cursivas o ligaduras.
  • U+200D ZERO WIDTH JOINER favorece uniones y conecta secuencias emoji.
  • U+FE0E/U+FE0F solicitan presentación de texto o emoji.

Llamarlos a todos «espacios invisibles» oculta sus tareas; varios ni siquiera son espacios. En escrituras con formas contextuales, los enlaces y no enlaces forman parte de la ortografía correcta. Borrarlos indiscriminadamente puede cambiar una palabra.

Los controles de dirección resuelven un problema real

El árabe y el hebreo se escriben principalmente de derecha a izquierda; las letras latinas y los números, de izquierda a derecha. El algoritmo bidireccional de Unicode decide cómo se muestra el texto mixto. Marcas, aislamientos, inclusiones y anulaciones ayudan con los casos ambiguos.

Son infraestructura esencial para el texto multilingüe. Sin embargo, como el orden lógico y el visual pueden diferir, controles mal gestionados hacen que la pantalla parezca decir algo distinto de lo que procesa el programa. Por eso los editores y las herramientas de seguridad señalan controles inesperados o desequilibrados.

Por qué el texto copiado cuesta depurar

Los caracteres invisibles llegan al copiar documentos o páginas, mediante métodos de entrada, saltos automáticos, secuencias emoji o intentos de crear nombres vacíos.

Los síntomas incluyen búsquedas fallidas, usuarios que parecen duplicados, URL que no coinciden, saltos inesperados y cursores que parecen atascarse. El diagnóstico correcto consiste en inspeccionar puntos de código, no en pulsar retroceso al azar.

Caracteres ocultos y parecidos también afectan a la seguridad

Unicode admite las escrituras del mundo, así que dos caracteres pueden tener glifos similares. La a latina y la а cirílica no son el mismo carácter aunque una fuente las dibuje casi igual.

Unicode Technical Standard #39 define mecanismos para detectar identificadores confundibles. Su objetivo es señalar riesgos, no reducir todas las escrituras a ASCII. Mezclar alfabetos puede ser legítimo en un nombre internacional y sospechoso en un dominio que imita a un banco.

La investigación sobre ataques imperceptibles a sistemas de lenguaje muestra además que inserciones invisibles, homógrafos, reordenamientos y controles de borrado pueden cambiar resultados automáticos sin una diferencia visual evidente.

Usos razonables y usos arriesgados

Son usos razonables probar la representación, analizar un documento, gestionar saltos y emplear controles de unión en las escrituras que los necesitan.

Son usos de alto riesgo:

  • disfrazar un enlace o una cuenta;
  • eludir moderación o detección de duplicados;
  • insertar controles en código fuente;
  • crear una identidad vacía donde el servicio lo prohíbe;
  • ocultar contenido al lector mientras el software lo procesa.

Incluso una decoración inocente puede perjudicar la accesibilidad si el lector de pantalla repite «espacio» o nombres inesperados.

Qué deberían hacer los productos

Las aplicaciones pueden advertir sobre controles de formato inesperados, comparar formas normalizadas y esqueletos confundibles cuando proceda, conservar texto multilingüe legítimo, mostrar puntos de código en el diagnóstico y separar nombres visibles de identificadores sensibles.

Normalizar, detectar parecidos y eliminar controles resuelven problemas diferentes. No existe un botón de «limpiar Unicode» correcto para todas las lenguas.

Invisible no significa carente de sentido. La ausencia de un glifo también puede ser una instrucción.

La herramienta de espacio invisible identifica los caracteres disponibles y su función. Úsala para pruebas y maquetación legítima, no para engañar o eludir normas.

Fuentes y lecturas recomendadas

  1. Estándar
  2. Estándar
  3. Estándar
  4. Artículo académico
    Bad Characters: Imperceptible NLP Attacks

    Nicholas Boucher, Ilia Shumailov, Ross Anderson, and Nicolas Papernot 2022 IEEE Symposium on Security and Privacy 2022 DOI 10.1109/SP46214.2022.9833641

Comentarios

Cargando comentarios…