Codifica y decodifica entidades HTML — escapa caracteres especiales al instante
También podrías necesitar
Las entidades HTML son secuencias de texto que representan caracteres especiales en HTML. Son necesarias cuando quieres mostrar caracteres que el navegador interpretaría como marcado: < (inicio de etiqueta), > (fin de etiqueta), & (inicio de entidad), " (atributo entre comillas dobles) y ' (atributo entre comillas simples). Sin escapar, estos caracteres pueden romper el HTML o crear vulnerabilidades XSS. Esta herramienta codifica los cinco caracteres críticos (&, <, >, ", ') y decodifica entidades nombradas (&, <, >), decimales (<) y hexadecimales (<) de vuelta a texto plano. La codificación de entidades HTML es la defensa primaria contra XSS (Cross-Site Scripting) cuando se insertan datos de usuario en HTML: nunca insertes datos sin escapar directamente en el DOM.
¿Por qué es importante escapar HTML?
Sin escapar, los datos de usuario insertados en HTML pueden contener etiquetas como <script> que el navegador ejecutaría, permitiendo ataques XSS (Cross-Site Scripting). Un comentario con <script>alert('xss')</script> podría ejecutar código en el navegador de otros usuarios. Escapar (<script>) convierte el contenido en texto visible inofensivo. Es la primera línea de defensa en seguridad web.
¿Cuáles son los cinco caracteres que siempre debo escapar?
Los cinco caracteres críticos son: & → & (debe escaparse primero para no afectar los otros escapes), < → < (inicio de etiqueta), > → > (fin de etiqueta), " → " (cierre de atributo entre comillas dobles), ' → ' (cierre de atributo entre comillas simples). Los demás caracteres especiales como ©, €, ñ, etc., son opcionales en HTML5 (puedes usarlos directamente en UTF-8) pero pueden escaparse por compatibilidad o claridad.
¿Cuál es la diferencia entre entidades nombradas, decimales y hexadecimales?
& es una entidad nombrada: tiene un nombre legible definido en el estándar HTML. & es la entidad decimal: usa el punto de código Unicode en base 10. & es la entidad hexadecimal: usa el punto de código en base 16. Las tres representan exactamente el mismo carácter (&). Las entidades nombradas son más legibles; las decimales y hexadecimales son universales y funcionan para cualquier carácter Unicode.
¿Por qué el & debe escaparse primero?
Si escapas en el orden incorrecto — por ejemplo, primero < a < y luego & a & — obtendrías &lt; (doble escape). El & debe convertirse a & antes que cualquier otro carácter para que los propios textos de escape no se vuelvan a escapar. Este orden es crítico en implementaciones manuales; las librerías correctas lo manejan automáticamente.
¿Escapar HTML es suficiente para prevenir XSS?
Depende del contexto. En el contexto HTML (contenido de un elemento), escapar & < > " ' es suficiente. En el contexto de atributo JavaScript (onclick='...'), también necesitas escapar las comillas. En URLs dentro de href o src, necesitas URL encoding. En JavaScript inline (<script>), el escapado HTML no es suficiente — necesitas JSON encoding. La regla es: usa la función de escape correcta para cada contexto donde insertes datos.