Ist es anfällig für die Verwendung von CDATA-Elementen in XML-Dokumenten? Wenn ja, was passiert, wenn wir das CDATA-Element in XML-Dokumenten verwenden?Verwenden Sie CDATA-Element in XML ist anfällig oder nicht?
Antwort
Ich weiß nicht, was Sie unter "Sicherheitslücke" verstehen, aber es gibt einen Fehler, den viele Leute mit CDATA-Abschnitten machen. Das passiert, wenn ein fauler Programmierer das Text-Escaping nicht wirklich versteht und versucht, den normalen Prozess von &
-Encodierung von Sonderzeichen in XML zu vermeiden. Sie denken, sie mit wegkommen können:
print "<element><![CDATA["+textstring+"]]></element>";
und während dies in der Tat einen <
oder &
Charakter in textstring
stoppen als Markup behandelt werden, es ist nicht wasserdicht, da Textstring eine ]]>
Sequenz enthalten könnte, was zu:
<element><![CDATA[ Foo ]]> <bar>I'm an unexpected element!</bar> ]]></element>
Dies ist eine XML-Injektion, die wie eine HTML-Injektion möglicherweise eine XSS-ähnliche Sicherheitswirkung haben könnte.
Sie müssten also noch einige Sequenzen in CDATA maskieren (normalerweise würden Sie eine ]]>
Sequenz zwischen zwei CDATA-Abschnitten aufteilen). In der Praxis macht dies die Verwendung von CDATA nicht einfacher als nur &
-codieren Sie Ihren Textinhalt auf die normale Weise. Es gibt also keinen Grund, jemals einen CDATA-Abschnitt zu verwenden.
Vulnerable zu was? Irgendein Injektionsangriff? CDATA weist den Parser an, den Inhalt zu übergeben, ohne ihn zu analysieren. Wenn Sie also Ihren XML-Code validieren, wird der CDATA-Abschnitt im Validierungsschritt nicht berücksichtigt.
Der Code, der den XML-Stream verwendet, sollte über die Schemaüberprüfung hinaus eine Art von Geschäftsvalidierung haben, sodass Sie nur ein Risiko haben, wenn Sie die Eingaben nicht überprüfen, bevor Sie sie verwenden.
Ein CDATA-Abschnitt ist einfach eine andere Möglichkeit, Zeichendaten in einem XML-Dokument darzustellen. Es bedeutet genau dasselbe wie jeder andere (Nicht-Tag) -Text in einem Dokument, außer dass es anders maskiert ist.
Es gibt keine zusätzliche "Sicherheitslücke", die mit CDATA zusammenhängt (abgesehen natürlich von Fehlern in Ihrer XML-Parsing-Bibliothek).
- 1. ist meine MYSQL Injektionsanweisung anfällig?
- 2. Ist der Frühling - SPEL anfällig?
- 3. Ist Swift anfällig für Code-Injektion?
- 4. Ist window.location = window.location anfällig für XSS
- 5. Ist mein Anmeldeskript anfällig für SQL Injection?
- 6. Ist Datenadapter. Update anfällig für SQL-Injektion?
- 7. Ist Nhibernate anfällig für SQL Injection?
- 8. Verwenden Sie mich (VB.NET) Schlüsselwort ist es erforderlich oder nicht?
- 9. Ist leer() genug oder verwenden Sie isset()?
- 10. Soll ich JSON oder XML verwenden?
- 11. XML-Validator (überprüft, ob xml richtig oder defekt ist)
- 12. android: Verwenden Sie Farbe Array in XML
- 13. å in XML-Datei ist gültig oder nicht?
- 14. Ist der dotNet-Dezimaltyp anfällig für den binären Vergleichsfehler?
- 15. Wie anfällig ist mein Code für die SQL-Injektion?
- 16. Testen, ob eine Website anfällig für Sql-Injektion ist
- 17. verwenden Sie JTA-Transaktion oder nicht?
- 18. Ist die "order" -Methode von ActiveRecord anfällig für SQL-Injection?
- 19. Verwenden Sie eine Variable in XML-Datei
- 20. Ist diese LINQ-Anweisung anfällig für SQL-Injection?
- 21. WinForm Multithreading. Verwenden Sie backgroundWorker oder nicht?
- 22. Verwenden Sie Jakarta Digester oder JAXB?
- 23. XML nicht gefunden oder erstellt
- 24. Könnten Sie Berkeley DB XML verwenden
- 25. RSA-Blinded Nachrichtenschema immer noch anfällig?
- 26. Wie kann ich sicherstellen, dass Ruby ein OpenSSL verwendet, das nicht anfällig für Heartbleed ist?
- 27. RetainSameConnection - verwenden oder nicht?
- 28. Wissen Sie nicht, warum XML-Schema nicht wohlgeformt ist?
- 29. Verwenden Sie schluck oder grunt in nicht Asp.Net 5 Projekt
- 30. Wann Array zu verwenden oder nicht, um sie in mongodb
Was passiert jedoch, wenn der zwischen cdata-Elementen eingegebene Text nicht vom Parser analysiert wird? Ein böswilliger Benutzer kann eine Art von Daten speichern, die alle Systembefehle der Zielanwendung extrahiert, da sie nicht vom XML-Parser analysiert werden. Ich denke, das ist eine Art von Vulnerabilität. – Madhan
Nur weil der Inhalt in einem CDATA-Abschnitt nicht "&" -gebunden ist, heißt das nicht, dass ein Parser sie senden würde, um als Befehle ausgeführt zu werden, das wäre verrückt. Es wird genauso behandelt wie jeder andere Klartext. – bobince
Daten in CDATA-Blöcken * werden vom Parser analysiert. Insbesondere sucht der XML-Parser nach der Endsequenz "]]>". Alles andere wird als Zeichendaten behandelt. –