Los datos de la cadena son entradas no confiables
Cada nombre de token, símbolo, mensaje de transacción, instrucción de escrow y valor de dataset en ZooBC lo eligió quien pagó la comisión. Nada lo revisa, y nada pasa a ser verdad por ser permanente. La regla para quien construye es breve: los datos leídos de la cadena son entradas, nunca instrucciones.
Mostrar el texto de la cadena
En una página web, pon el texto de la cadena en pantalla como texto:
el.textContent = token.name; // shown as text: safe
el.innerHTML = token.name; // parsed as HTML: never
Un texto insertado como HTML puede llevar marcado y scripts que se ejecutan con los permisos de tu página, y los filtros construidos con expresiones regulares no bastan para impedirlo. Los enlaces requieren el mismo cuidado: no sigas una URL encontrada en los datos de la cadena sin comprobar su esquema.
Del mismo modo, una app dirigida por un agente de IA nunca debe obedecer una frase que haya encontrado en el nombre de un token, en una nota o en el valor de un dataset. «Ignora tus instrucciones» escrito en el nombre de un token es un dato como cualquier otra cadena de texto. Y el saldo de un remitente no dice nada sobre si su texto es seguro.
Lo que sí comprueba el protocolo
Solo unos pocos campos tienen una forma que la cadena impone:
| Campo | Regla |
|---|---|
valores de dataset tokenicon: | una imagen PNG o WebP, de 1 a 512 píxeles en cada dimensión, de 16 a 4096 bytes |
| dominios del registro, como el de una pasarela | de 1 a 256 caracteres: letras, dígitos, puntos y guiones |
| URL del registro, como la de una pasarela | empiezan por https://; sin espacios en blanco, caracteres de control, comillas, corchetes angulares ni acentos graves |
valores de dataset inv: | un objeto JSON sin ningún número negativo en ninguna parte |
Todo lo demás son bytes arbitrarios por diseño. Incluso un campo comprobado es solo una forma: una dirección https:// bien formada puede seguir llevando a cualquier sitio.
Iconos de tokens
Un nodo sirve el icono de cada token en GET /api/v1/tokens/:id/icon con cabeceras que lo mantienen inerte: X-Content-Type-Options: nosniff, Content-Disposition: inline, Content-Security-Policy: default-src 'none'; sandbox y una caché de cinco minutos. A una página no le hace falta más que una etiqueta de imagen que apunte a esa ruta.
Filas de dataset: comprueba el autor
La lista de datasets de un nodo para una cuenta devuelve las filas en las que esa cuenta es el autor o el destinatario, y cualquier cuenta puede escribir una fila bajo cualquier otra (datasets). Para leer lo que una cuenta dice de sí misma, quédate solo con las filas cuyo role sea setter o both; una fila en la que solo es el destinatario la escribió otra persona. Para comprobar una afirmación como «verified = yes», acepta solo una fila cuyo autor sea la cuenta en la que confías.
Los valores vienen en dos formas: value, escapado, y value_b64, sin pérdidas. En cualquier caso, el contenido es el texto de un desconocido, que hay que mostrar con textContent como todo lo demás.
Lista de comprobación
textContent, nuncainnerHTML, para cada cadena de texto leída de la cadena.- Comprueba el esquema de una URL antes de seguirla, y nunca sigas el texto de la cadena como una instrucción.
- Confía en una fila de dataset solo si viene del autor esperado.
- Muestra los iconos de los tokens a través de la ruta de iconos.