Cómo funciona : Markdown a HTML
Cualquier signo de HTML que haya en su texto se ESCAPA, sin excepción: un script escrito dentro de su Markdown sale a la vista, nunca ejecutable. Es más estricto que la especificación, y es el único comportamiento seguro en una herramienta que devuelve un archivo que alguien va a abrir.
La promesa de esta herramienta es corta, y está escrita: la especificación de referencia del Markdown tiene más de quinientos ejemplos de conformidad. Nosotros no implementamos quinientos. Implementamos el subconjunto que la gente escribe de verdad, y la página lo enumera construcción por construcción, para que usted sepa antes de pegar qué se va a convertir y qué no.
Sobre la seguridad, una precisión de doctrina que merece ser exacta. La especificación PERMITE el HTML en bruto dentro de un documento Markdown, y hemos comprobado en su texto que NO le pide EN NINGÚN SITIO a las implementaciones que saneen su salida: la consigna de «pase el resultado por un saneador» viene de la documentación de ciertas bibliotecas, no de la norma. Así que no se la vamos a atribuir a la norma.
Nuestra decisión es más sencilla y más estricta: cualquier signo de HTML que haya en su texto se escapa. Una etiqueta escrita dentro de su Markdown sale VISIBLE en el resultado, nunca activa. Y las direcciones de enlace peligrosas se rechazan por su nombre, con el enlace conservado como texto simple y un aviso en pantalla, siguiendo la recomendación pública de permitir solo direcciones en http y https dentro de un atributo de dirección.
Cómo funciona
- Pegue su Markdown. No sale de su dispositivo.
- Marque «página completa» si quiere un archivo HTML autónomo en vez de un fragmento para insertar.
- Copie o descargue el resultado. Si había direcciones rechazadas, la tabla las nombra.
Formatos aceptados
El subconjunto que se convierte: títulos con almohadillas y títulos subrayados, párrafos, negrita, cursiva, tachado, código literal, bloques de código enmarcados con su lenguaje, listas con viñetas y numeradas, citas anidadas, líneas horizontales, enlaces e imágenes con su título, y el salto de línea duro con dos espacios al final de línea. Las tablas, las notas al pie y las listas de definiciones NO se convierten: no forman parte de la especificación básica.
Texto en formato Markdown
Hasta 200 000 caracteres. El resultado sale en HTML, como fragmento o como página autónoma.
Sus límites
Un SUBCONJUNTO de la especificación, enumerado aquí arriba
La especificación de referencia tiene más de quinientos ejemplos de conformidad, y muchos cubren casos que nadie escribe nunca: listas anidadas de cuatro niveles con continuación, referencias de enlace definidas más adelante, entidades HTML numéricas. Implementar y COMPROBAR quinientos casos sería un proyecto entero. Preferimos anunciar con precisión lo que funciona: es una promesa más pequeña, y se cumple.
El HTML escrito dentro de su Markdown se ESCAPA, nunca se copia
La especificación lo permite, pero una herramienta que devuelve un archivo HTML pensado para abrirse tiene que elegir la seguridad: un script colado dentro de un Markdown que le llega a usted de alguien se ejecutaría. Así que cualquier signo de HTML se convierte en texto visible. Consecuencia que conviene conocer: si usted usaba una etiqueta a propósito para conseguir un efecto concreto, saldrá en claro dentro del resultado, y es intencionado.
Solo se conservan las direcciones en http, https, mailto y las direcciones relativas
Un enlace de Markdown puede llevar cualquier esquema de dirección, incluidos los que ejecutan código al pulsarlos. Las recomendaciones públicas de OWASP sobre los scripts inyectados en una página dicen que solo se permitan http y https dentro de un atributo de dirección. La herramienta sigue esa regla, conserva el texto del enlace, y AVISA de la dirección rechazada en una tabla: quitarla en silencio le dejaría creer que el enlace funciona.
Las tablas no se convierten
La sintaxis de tabla con barras verticales es una extensión muy extendida, pero no forma parte de la especificación básica: cada implementación la trata de forma algo distinta, sobre todo en la alineación y en las celdas vacías. Preferimos no implementarla antes que devolver una tabla distinta de la que produce su plataforma de siempre.
Preguntas sobre esta herramienta
¿Mi texto se envía a alguna parte?
No. Compruébelo en treinta segundos: abra el inspector con la tecla F12, pestaña «Red», vacíe la lista, y después pegue su Markdown y conviértalo. No aparece ni una línea. Corte su conexión y vuelva a hacerlo: el analizador está escrito dentro de la página.
¿Por qué mi etiqueta HTML sale en claro dentro del resultado?
Porque cualquier signo de HTML que haya en su texto se escapa, sin excepción. La especificación del Markdown permite el HTML en bruto, pero una herramienta que produce un archivo pensado para que alguien lo abra no puede copiar una etiqueta venida de un texto que ella no ha escrito: un script colado en un documento recibido se ejecutaría. Si necesita una etiqueta concreta, añádala después de convertir, en su editor, sabiendo lo que hace.
Uno de mis enlaces ya no se puede pulsar.
Es que su dirección usa un esquema que permite ejecutar código al pulsarla. La herramienta conserva el texto del enlace, quita la dirección, y la NOMBRA en una tabla. Si ese enlace viene de un documento que usted no ha escrito, es un dato para tomárselo en serio. Las direcciones que se conservan son las de http, https, mailto, las anclas y las direcciones relativas.
Mis tablas no se convierten.
No, y está escrito en los límites. La sintaxis de tabla con barras verticales es una extensión muy extendida pero ausente de la especificación básica, y cada implementación la trata de otra forma en la alineación y en las celdas vacías. Devolver una tabla que no se parece a la de su plataforma de siempre sería peor que anunciar sin rodeos que no lo hacemos.
¿El resultado cumple la especificación?
En el subconjunto que anunciamos, sigue sus reglas, incluidas las que se olvidan a menudo: el salto de línea duro con dos espacios al final de línea, el código literal que protege su contenido de cualquier otra interpretación, las citas que se anidan. En todo lo demás no pretendemos nada: la especificación tiene más de quinientos ejemplos de conformidad, y no los hemos probado todos. Por eso la lista de lo que funciona está escrita arriba en la página, en vez de un logotipo de conformidad.
Cualquier signo de HTML que haya en su texto se ESCAPA, sin excepción: un script escrito dentro de su Markdown sale a la vista, nunca ejecutable. Es más estricto que la especificación, y es el único comportamiento seguro en una herramienta que devuelve un archivo que alguien va a abrir.
ComprobarLa prueba, paso a pasoLa comprobación con el inspector de red, explicada gesto a gesto y con capturas de pantalla.
El rincónEl rincón de los textos y los datosContar, comparar, dar formato, limpiar. Los gestos pequeños que cuestan una hora cuando no se tienen a mano.