Saltar al contenido

Codificación HTML y de atributos

Solución:

La codificación HTML reemplaza ciertos caracteres que son semánticamente significativos en el marcado HTML, con caracteres equivalentes que se pueden mostrar al usuario sin afectar el análisis del marcado.

Los caracteres más significativos y obvios son <,>, & y “que se reemplazan por &lt;, &gt;, &amp;, y &quot;, respectivamente. Además, un codificador puede reemplazar los caracteres de orden superior con la codificación de entidad HTML equivalente, por lo que el contenido se puede conservar y representar correctamente incluso en el caso de que la página se envíe al navegador como ASCII.

La codificación de atributos HTML, por otro lado, solo reemplaza un subconjunto de los caracteres que son importantes para evitar que una cadena de caracteres rompa el atributo de un elemento HTML. Específicamente, normalmente solo reemplazaría “, & y &quot;, &amp;, y &lt;. Esto se debe a que la naturaleza de los atributos, los datos que contienen y la forma en que son analizados e interpretados por un navegador o un analizador HTML es diferente a la forma en que se leen un documento HTML y sus elementos.


En términos de cómo eso se relaciona con XSS, desea desinfectar adecuadamente las cadenas de una fuente externa (como el usuario) para que no rompan su página o, lo que es más importante, inyectar marcas y secuencias de comandos que puedan alterar o destruir su aplicación o afectar las máquinas de sus usuarios (aprovechando las vulnerabilidades del navegador o la plataforma).

Si desea mostrar contenido generado por el usuario en su página, codificará HTML la cadena y luego la mostrará en su marcado, y todo lo que ingresaron se mostrará literalmente sin preocuparse por XSS o marcado roto.

Si necesita adjuntar contenido generado por el usuario a un elemento en un atributo (por ejemplo, un tooltip en un enlace), atribuiría codificación para asegurarse de que el contenido no rompa el marcado del elemento.

¿Podría usar la misma función para la codificación HTML para manejar la codificación de atributos? Técnicamente, sí. En el caso de la metapregunta que vinculó, parece que estaban tomando HTML que estaba codificado y decodificando, luego usando ese resultado como un valor de atributo, lo que da como resultado que el marcado codificado se muestre literalmente, si lo sigue.

Recomendaría revisar las Reglas de prevención 1 y 2 de OWASP XSS.
Un breve resumen …

Regla 1 por HTML

Escape de los siguientes caracteres con codificación de entidad HTML …
& -> &amp;
< -> &lt;
> -> &gt;
" -> &quot;
' -> &#x27;
/ -> &#x2F;

Regla 2 por Atributos comunes de HTML

A excepción de los caracteres alfanuméricos, escape todos los caracteres con valores ASCII inferiores a 256 con el & # xHH; formato (o una entidad nombrada si está disponible) para evitar cambiar el atributo. La razón por la que esta regla es tan amplia es que los desarrolladores con frecuencia dejan atributos sin comillas. Los atributos citados correctamente solo se pueden escapar con la cita correspondiente. Los atributos sin comillas se pueden dividir con muchos caracteres, incluidos [space] % * +, – /; <=> ^ y |.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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