Cookies de estadística y publicidad
Usamos cookies de estadística y de publicidad, y ambas van a Google. Si rechazas, para ti no cambia nada visible.Ir a la página de privacidad
Pega texto y recíbelo con los caracteres que cambian cómo se analiza un documento sustituidos por sus formas de escape. Es el paso que convierte el texto escrito por otra persona en contenido y no en estructura, y es el sitio donde una sustitución olvidada convierte un campo de comentarios en un problema de seguridad. El cálculo ocurre en esta página.
Dónde se ejecuta
No se sube nada, porque no hay archivo: se calcula en esta misma página.
Sin cola y sin cuenta
Responde tan rápido como dé tu máquina, y nunca pregunta quién eres.
Tantas veces como quieras
No se cuenta nada ni se limita nada: volver a responder no nos cuesta nada.
A un analizador de HTML le importan poquísimos caracteres. Los signos de menor y mayor abren y cierran una etiqueta, el ampersand abre una referencia de carácter, y dentro de un valor de atributo la comilla doble y la simple lo terminan. Son cinco, y todo lo demás es contenido corriente.
Por eso el ajuste sobrio escapa exactamente esos cinco y nada más. Un codificador que convierta cada tilde en una entidad no es más seguro: solo produce una salida cuatro o cinco veces más larga e ilegible para las personas, protegiendo frente a exactamente los mismos ataques que la versión corta.
Quien sustituya a mano tiene que empezar por el `&`. Si le toca el turno más tarde, el codificador ya ha generado sus propias entidades y vuelve a escapar el `&` de cada una: un `<` se convierte en `<` y eso en `&lt;`, y la página muestra el texto `<` en lugar de un signo de menor.
Es con diferencia el fallo más común en las funciones de escape caseras, y de los pocos que se reconocen a simple vista en la salida: si aparece `&` delante de otros nombres de entidad, el orden está mal. Esta herramienta resuelve la sustitución en una sola pasada, así que el problema no puede darse.
Entre dos etiquetas bastan tres sustituciones: menor, mayor y ampersand. Dentro de un valor de atributo se añaden las comillas, porque ahí una comilla doble termina el valor y lo que venga después lo lee el analizador como un atributo más — la vía clásica para colar un `onmouseover` en una etiqueta ajena.
El caso peor son los valores de atributo sin comillas, que HTML permite: ahí basta un espacio para terminar el valor, y escapar ya no alcanza. La regla práctica es poner siempre comillas en los atributos y escapar los cinco caracteres, que es justo lo que hace el ajuste de esta página.
El segundo ajuste escribe además cada carácter fuera de ASCII como referencia numérica, de modo que una `ñ` se convierte en `ñ`. Para la seguridad no aporta nada y para la legibilidad es una pérdida: solo sirve donde algún eslabón de la cadena no soporta UTF-8.
Esos eslabones existen todavía: plantillas de correo antiguas, exportaciones a sistemas con Latin-1 cableado, de vez en cuando una columna con la colación equivocada. Si las eñes y las tildes se convierten en interrogantes o en pares de letras raros por el camino, la forma numérica es un rodeo sólido. Donde la cadena habla UTF-8 limpiamente, sobra.
Escapar protege en un sitio: al insertar en HTML. No es una validación de entrada ni sustituye a ninguna. Quien escapa al guardar en lugar de al mostrar acaba con datos en la base que aparecen como `&` en una respuesta JSON, en una exportación CSV o en un correo — sitios donde el HTML nunca estuvo implicado.
El orden que funciona es el contrario: guardar en crudo y escapar al renderizar para el destino concreto. Los mismos datos salen entonces correctos en HTML, en JSON y en un correo de texto plano, cada uno con sus reglas, y nadie tiene que adivinar en qué estado está un campo.
HTML admite referencias con nombre como `&`, decimales como `&` y hexadecimales como `&`. Las tres designan el mismo carácter y un analizador acepta las tres. Esta herramienta genera las de nombre para los cinco caracteres decisivos, porque se leen en el código fuente, y numéricas para todo lo demás.
Al leer salidas ajenas te encontrarás las tres mezcladas, a menudo en el mismo archivo, porque las han producido piezas distintas. No es un error ni indica un problema: solo dice que en ese documento intervino más de una herramienta.
La comilla simple tiene un nombre, `'`, pero viene de XML y no formó parte oficialmente de HTML hasta HTML5. En HTML 4 no estaba definido, así que los analizadores muy antiguos lo imprimen tal cual en lugar de resolverlo.
La forma numérica `'` nunca ha tenido ese problema y funciona en todas partes, por lo que sigue siendo la opción por defecto de casi cualquier biblioteca de escape. Es uno de esos casos en los que una incompatibilidad de hace veinte años fijó la convención aunque el motivo haya desaparecido.
Un valor que se escribe dentro de un bloque `<script>` ya no está en contexto HTML sino en contexto JavaScript, y ahí rigen otras reglas. Una comilla escapada como entidad no ayuda; y al revés, una cadena inofensiva en HTML puede cerrar el script.
Lo mismo vale para un valor dentro de un `href`, de un `style` o de un `data-` que luego se evalúa. Cada uno de esos sitios tiene su escape, y la pregunta correcta nunca es «¿está escapado?» sino «¿está escapado para el sitio donde acaba?». Esta herramienta responde al caso HTML.
Lo que se pega en este campo es habitualmente texto ajeno: un comentario de un usuario, un mensaje de soporte, una descripción con nombres dentro. Como la sustitución ocurre en la página, no hay comunicación a nosotros ni encargo de tratamiento sobre ese contenido.
Se comprueba en el panel de red del navegador: mientras la usas no sale ninguna petición con tu entrada. La página viene de una CDN y la web lleva publicidad, así que hay peticiones — conocen que has estado aquí, no lo que hay en el campo.
No. La sustitución ocurre en esta página, en tu navegador. Abre el panel de red mientras escribes y verás que no sale ninguna petición con tu entrada.
Porque para un analizador de HTML son caracteres corrientes y en un documento UTF-8 no rompen nada. Si tu cadena de procesamiento no soporta UTF-8, elige el segundo ajuste y saldrán como referencias numéricas.
En el punto donde se compone el HTML, sí: es su función. No sustituye a la validación de entrada y no vale para valores que acaban en JavaScript, en un href o en contexto CSS, donde rigen otras reglas.
Porque el texto ya venía escapado y se ha escapado otra vez. No es un fallo de la herramienta: indica que antes, en tu cadena, ya pasó una función de escape — normalmente la de tu motor de plantillas.
Solo el que ponga tu propio navegador. No hay servidor que cuente ni limite nada; las entradas muy grandes hacen que la pestaña se lo piense un momento, y eso es todo.