Detaillierte Einführung in den Beispielcode der XML-Injection in der Web-Sicherheit

黄舟
Freigeben: 2017-03-08 16:48:41
Original
2264 Leute haben es durchsucht

Der XML-Injection-Angriff funktioniert nach dem gleichen Prinzip wie der SQL-Injection. Der Angreifer gibt Schadcode ein, um Funktionen auszuführen, die über seine eigenen Berechtigungen hinausgehen. XML ist eine Möglichkeit, Daten direkt ein- oder auszugeben, ohne sie beim Ändern oder Abfragen zu entkommen, was zu XML-Injection-Schwachstellen führt. Angreifer können das XML-Datenformat ändern und neue XML-Knoten hinzufügen, was sich auf den Datenverarbeitungsprozess auswirkt.

Angriff

Das Folgende ist ein Beispiel für das Speichern registrierter Benutzerinformationen im XML-Format:

final String GUESTROLE = "guest_role";
...
//userdata是准备保存的xml数据,接收了name和email两个用户提交来的数据。
String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                request.getParameter("name")+
                "</name><email>"+
                request.getParameter("email")+
                "</email></USER>";
//保存xml
userDao.save(userdata);
Nach dem Login kopieren

Wie Sie sehen können, führt dieser Code keine Filtervorgänge durch. Nachdem sich ein gewöhnlicher Benutzer registriert hat, wird ein solcher Datensatz generiert:

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com
    </email>
</USER>
Nach dem Login kopieren

Wenn der Angreifer seine E-Mail-Adresse eingibt, kann er den folgenden Code eingeben:

user1@a.com</email></USER><USER role="admin_role"><name>lf</name><email>user2@a.com
Nach dem Login kopieren

Nach dem Wenn sich der Endbenutzer registriert, werden die Daten wie folgt angezeigt:

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com</email>
</USER>
<USER role="admin_role">
    <name>lf</name>
    <email>user2@a.com
    </email>
</USER>
Nach dem Login kopieren

Wie Sie sehen können, gibt es einen zusätzlichen Administrator LF mit der Rolle="admin_role". den Zweck des Angriffs erreichen.

Verteidigung

Wie das alte Sprichwort sagt: Wo Angriff ist, ist auch Verteidigung. Das Verteidigungsprinzip ist eigentlich sehr einfach, nämlich die Schlüsselzeichenfolgen zu maskieren:

& --> &
 < --> <
 > --> >
 " --> "
 &#39; --> &#39;
Nach dem Login kopieren

Bevor Sie das XML speichern und anzeigen, maskieren Sie nur den Datenteil:

String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                StringUtil.xmlencode(request.getParameter("name"))+
                "</name><email>"+
                StringUtil.xmlencode(rrequest.getParameter("email"))+
                "</email></USER>";
Nach dem Login kopieren

Das ist es.


Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den Beispielcode der XML-Injection in der Web-Sicherheit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!