¿Es vulnerable usar el elemento CDATA en documentos XML? Si es así, ¿qué ocurre si utilizamos elementos CDATA en documentos XML?Usar el elemento CDATA en XML ¿es vulnerable o no?
Respuesta
No sé qué quiere decir con ‘vulnerabilidad’, pero hay un error que muchas personas hacen con las secciones CDATA. Esto sucede cuando un programador perezoso no comprende realmente el escape de texto e intenta evitar el proceso normal de &
, que codifica caracteres especiales en XML. Ellos piensan que pueden salirse con la suya:
print "<element><![CDATA["+textstring+"]]></element>";
y mientras este hecho va a parar a un personaje <
o &
en textstring
ser tratado como el marcado, que no es a prueba de agua, porque TextString podría contener una secuencia ]]>
, lo que resulta en:
<element><![CDATA[ Foo ]]> <bar>I'm an unexpected element!</bar> ]]></element>
Este es un XML-inyección, que al igual que una inyección de HTML podría potencialmente tener un impacto en la seguridad XSS-similares.
Por lo tanto, todavía tendría que escapar algunas secuencias en CDATA (por lo general, dividiría una secuencia ]]>
entre dos secciones CDATA). En la práctica, el uso de CDATA no es más sencillo que el &
, que consiste en codificar el contenido de texto de la forma habitual. Entonces realmente no hay razón alguna para usar una sección CDATA.
Vulnerable a qué? ¿Un ataque de inyección de algún tipo? CDATA le dice al analizador que pase los contenidos sin analizarlos, así que si está validando su XML, supongo que la sección CDATA se pierde en el paso de validación.
El código que utiliza la secuencia XML debe tener algún tipo de validación comercial más allá de la validación del esquema, por lo que solo correrá riesgos si no comprueba las entradas antes de usarlas.
Una sección CDATA es simplemente otra forma de representar datos de caracteres dentro de un documento XML. Significa exactamente lo mismo que cualquier otro texto (sin etiqueta) en un documento, excepto que se escapó de manera diferente.
No hay una "vulnerabilidad" adicional asociada con CDATA (excepto por los errores en su biblioteca de análisis XML, por supuesto).
- 1. Analizando bloques XML CDATA
- 2. XML CDATA Encoding
- 3. å en el archivo xml es válido o no?
- 4. Analizando XML no estándar (etiqueta CDATA)
- 5. Elemento XSD ¿Restricción no nula o vacía para Xml?
- 6. Html dentro de XML. Debo usar CDATA o codificar el HTML
- 7. Analizando XML CDATA con PHP
- 8. ¿Es Spring - SpEL vulnerable?
- 9. Cómo escribir los CDATA XML
- 10. jQuery y XML (con CDATA)
- 11. Lectura de CDATA XML en Java
- 12. ¿Cómo incluir CData usando LINQ to XML?
- 13. ¿Es realmente necesario CDATA?
- 14. que el <!CDATA> en una etiqueta XML
- 15. ¿Es posible tener texto HTML o CDATA dentro de un atributo XML?
- 16. Uso de CDATA dentro de otro CDATA
- 17. conseguir el contenido CDATA al analizar el archivo XML
- 18. ¿Qué es CDATA en HTML?
- 19. XML, ¿qué es esto: elemento nulo o vacío?
- 20. Cómo analizar XML para <![CDATA[]]>
- 21. ¿Cómo usar CDATA en documentos html?
- 22. SQL Server XML output with CDATA
- 23. ¿Debo usar <! [CDATA [...]]> en HTML5?
- 24. ¿Está empezando a usar CDATA un cambio de rotura?
- 25. Leyendo la sección XML CDATA con]] en él
- 26. Acerca de! [CDATA [, ¿qué es?
- 27. Transformar XML con XSLT y preservar CDATA (en Ruby)
- 28. ¿Cómo preservar nuevas líneas en CDATA al generar XML?
- 29. ¿Es mejor usar XNodeEqualityComparer o XElement.DeepEquals para comparar objetos xml?
- 30. ¿Cómo se lee CDATA en un archivo XML con PowerShell?
pero ¿qué sucede si el texto ingresado entre elementos de cdata no es analizado por el analizador? un usuario malintencionado puede mantener algún tipo de datos que extraiga todos los comandos del sistema de la aplicación de destino, ya que no es analizado por el analizador xml. Creo que este es un tipo de vulnerabilidad. – Madhan
El hecho de que el contenido de una sección de CDATA no esté '& '-escaped no significa que un analizador los envíe para que se ejecute como comandos, eso sería una locura. Simplemente se manejará de la misma manera que cualquier otro texto sin formato. – bobince
Los datos en bloques CDATA * son * analizados por el analizador. Específicamente, el analizador XML está buscando la secuencia final ']]>'. Todo lo demás se trata como datos de caracteres. –