in

¿Qué caracteres deben escaparse en HTML?

apple touch icon@2

Si está insertando contenido de texto en su documento en una ubicación donde se espera contenido de texto1, normalmente solo necesita escapar los mismos caracteres que lo haría en XML. Dentro de un elemento, esto solo incluye la entidad escape ampersand & y el elemento delimitador signos menor que y mayor que < >:

& becomes &amp;
< becomes &lt;
> becomes &gt;

Dentro de los valores de atributo, también debe escapar del carácter de comillas que está utilizando:

" becomes &quot;
' becomes &#39;

En algunos casos, puede ser seguro omitir el escape de algunos de estos personajes, pero te animo a que escapes de los cinco en todos los casos para reducir la posibilidad de cometer un error.

Si la codificación de su documento no admite todos los caracteres que está usando, como si está tratando de usar emoji en un documento codificado en ASCII, también debe escapar de ellos. La mayoría de los documentos en estos días se codifican utilizando la codificación UTF-8 totalmente compatible con Unicode donde esto no será necesario.

En general, no debe escapar de los espacios como &nbsp;. &nbsp; no es un espacio normal, es un espacio irrompible. Puede usar estos en lugar de espacios normales para evitar que se inserte un salto de línea entre dos palabras, o para insertar espacio adicional sin que se contraiga automáticamente, pero este suele ser un caso poco común. No haga esto a menos que tenga una restricción de diseño que lo requiera.


1 Por «una ubicación donde se espera contenido de texto», me refiero a dentro de un elemento o valor de atributo entre comillas donde se aplican las reglas de análisis normal. Por ejemplo: <p>HERE</p> o <p title="HERE">...</p>. Lo que escribí arriba no se aplica al contenido que tiene reglas especiales de análisis o significado, como dentro de una secuencia de comandos o etiqueta de estilo, o como un elemento o nombre de atributo. Por ejemplo: <NOT-HERE>...</NOT-HERE>, <script>NOT-HERE</script>, <style>NOT-HERE</style>, o <p NOT-HERE="...">...</p>.

En estos contextos, las reglas son más complicadas y es mucho más fácil introducir una vulnerabilidad de seguridad. Le recomiendo encarecidamente que no inserte contenido dinámico en ninguna de estas ubicaciones. He visto equipos de desarrolladores competentes y conscientes de la seguridad que introducen vulnerabilidades asumiendo que han codificado estos valores correctamente, pero sin un caso extremo. Por lo general, existe una alternativa más segura, como poner el valor dinámico en un atributo y luego manejarlo con JavaScript.

Si es necesario, lea las reglas de prevención XSS del proyecto de seguridad de aplicaciones web abiertas para ayudar a comprender algunas de las inquietudes que deberá tener en cuenta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Python – Diccionario

gfg 200x200 min

Iterar sobre una lista en Python