Articulo de referencia

Sanitización de HTML

En el ámbito de la sanitización de datos , la sanitización de HTML consiste en examinar un documento HTML y generar uno nuevo que conserve únicamente las etiquetas y atributos c...

En el ámbito de la sanitización de datos , la sanitización de HTML consiste en examinar un documento HTML y generar uno nuevo que conserve únicamente las etiquetas y atributos considerados "seguros" y deseados. La sanitización de HTML puede utilizarse para protegerse contra ataques como el cross-site scripting (XSS), al sanitizar cualquier código HTML introducido por un usuario.

Detalles

A menudo se permiten etiquetas básicas para cambiar fuentes, como , , , , y , mientras que las etiquetas más avanzadas, como , , , y , se eliminan o se escapan mediante entidades HTML durante el proceso de saneamiento. Además, se eliminan atributos potencialmente peligrosos , como y , para evitar la inyección de código malicioso.<b><i><u><em><strong><script><object><embed><link>onclickonfocus

La sanitización se suele realizar mediante listas blancas o negras . Omitir un elemento HTML seguro de la lista blanca no es grave; simplemente significa que esa característica no se incluirá después de la sanitización. Por otro lado, si se omite un elemento inseguro de la lista negra, la vulnerabilidad no se eliminará del código HTML resultante. Por lo tanto, una lista negra desactualizada puede ser peligrosa si se han introducido nuevas características inseguras en el estándar HTML.

Se puede realizar una sanitización adicional basada en reglas que especifican qué operación se debe realizar en las etiquetas del sujeto. Las operaciones típicas incluyen la eliminación de la etiqueta en sí conservando el contenido, la conservación únicamente del contenido textual de una etiqueta o la imposición de ciertos valores a los atributos. [ 1 ]

Implementaciones

En PHP , la sanitización de HTML se puede realizar utilizando la strip_tags()función, aunque esto conlleva el riesgo de eliminar todo el contenido textual que sigue a un símbolo de menor que o corchete angular sin cerrar. [ 2 ] La biblioteca HTML Purifier es otra opción popular para aplicaciones PHP. [ 3 ]

En Java (y .NET ), la sanitización se puede lograr utilizando el proyecto OWASP Java HTML Sanitizer. [ 4 ]

En .NET , varios sanitizadores utilizan Html Agility Pack, un analizador HTML. [ 5 ] [ 6 ] [ 1 ] Otra biblioteca es HtmlSanitizer. [ 7 ]

En JavaScript hay sanitizadores "solo JS" para el back-end y implementaciones basadas en el navegador [ 8 ] que utilizan el propio analizador del modelo de objetos del documento (DOM) del navegador para analizar el HTML (para un mejor rendimiento).

Referencias

  1. 1 2 "HtmlRuleSanitizer" . GitHub . 13 de agosto de 2021.
  2. "strip_tags" . PHP.NET.
  3. "HTML Purifier - Filtra tu HTML de forma compatible con los estándares!" . htmlpurifier.org .
  4. «Desinfectante HTML para Java OWASP» .
  5. "Paquete de agilidad HTML - Inicio" . Archivado del original el 1 de enero de 2013. Consultado el 4 de enero de 2013 .
  6. "Limpiar la lista blanca con HtmlAgilityPack" . 14 de junio de 2011.
  7. Ganss, Michael (5 de diciembre de 2023). "HtmlSanitizer" . Recuperado el 7 de diciembre de 2023 .
  8. "JS HTML Sanitizer" . GitHub . 14 de octubre de 2021.