Maison développement back-end Tutoriel XML/RSS Introduction détaillée à l'exemple de code d'injection XML dans la sécurité Web

Introduction détaillée à l'exemple de code d'injection XML dans la sécurité Web

Mar 08, 2017 pm 04:48 PM

L'attaque par injection XML a le même principe que l'injection SQL. L'attaquant saisit du code malveillant pour exécuter des fonctions au-delà de ses propres autorisations. XML est un moyen de stocker des données. Si les données sont directement entrées ou sorties sans s'échapper lors de la modification ou de l'interrogation, cela entraînera des vulnérabilités d'injection XML. Les attaquants peuvent modifier le format des données XML et ajouter de nouveaux nœuds XML, affectant ainsi le processus de traitement des données.

Attaque

Ce qui suit est un exemple d'enregistrement des informations d'un utilisateur enregistré au format XML :

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);
Copier après la connexion

Comme vous pouvez le voir, ce code n'effectue aucune opération de filtrage. Après l'enregistrement d'un utilisateur ordinaire, un tel enregistrement de données sera généré :

<?xml version="1.0" encoding="UTF-8"?>
<USER role="guest_role">
    <name>user1
    </name>
    <email>user1@a.com
    </email>
</USER>
Copier après la connexion

Lorsque l'attaquant saisit son adresse e-mail, il peut saisir le code suivant :

user1@a.com</email></USER><USER role="admin_role"><name>lf</name><email>user2@a.com
Copier après la connexion

Après l'enregistrement l'utilisateur final s'enregistre, les données seront. Cela devient :

<?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>
Copier après la connexion

Comme vous pouvez le voir, il y a un administrateur supplémentaire lf avec role="admin_role". atteindre le but de l’attaque.

Défense

Comme le dit le vieil adage, là où il y a attaque, il y a défense. Le principe de défense est en fait très simple, il s'agit d'échapper les chaînes clés :

& --> &
 < --> <
 > --> >
 " --> "
 &#39; --> &#39;
Copier après la connexion

Avant de sauvegarder et d'afficher le XML, échappez simplement la partie données séparément :

String userdata = "<USER role="+
                GUESTROLE+
                "><name>"+
                StringUtil.xmlencode(request.getParameter("name"))+
                "</name><email>"+
                StringUtil.xmlencode(rrequest.getParameter("email"))+
                "</email></USER>";
Copier après la connexion

C'est il.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Puis-je ouvrir un fichier XML à l'aide de PowerPoint ? Puis-je ouvrir un fichier XML à l'aide de PowerPoint ? Feb 19, 2024 pm 09:06 PM

Les fichiers XML peuvent-ils être ouverts avec PPT ? XML, Extensible Markup Language (Extensible Markup Language), est un langage de balisage universel largement utilisé dans l'échange et le stockage de données. Comparé au HTML, XML est plus flexible et peut définir ses propres balises et structures de données, rendant le stockage et l'échange de données plus pratiques et unifiés. PPT, ou PowerPoint, est un logiciel développé par Microsoft pour créer des présentations. Il fournit un moyen complet de

Convertir des données XML au format CSV en Python Convertir des données XML au format CSV en Python Aug 11, 2023 pm 07:41 PM

Convertir des données XML en Python au format CSV XML (ExtensibleMarkupLanguage) est un langage de balisage extensible couramment utilisé pour le stockage et la transmission de données. CSV (CommaSeparatedValues) est un format de fichier texte délimité par des virgules couramment utilisé pour l'importation et l'exportation de données. Lors du traitement des données, il est parfois nécessaire de convertir les données XML au format CSV pour faciliter l'analyse et le traitement. Python est un puissant

Python analyse les caractères spéciaux et les séquences d'échappement en XML Python analyse les caractères spéciaux et les séquences d'échappement en XML Aug 08, 2023 pm 12:46 PM

Python analyse les caractères spéciaux et les séquences d'échappement en XML XML (eXtensibleMarkupLanguage) est un format d'échange de données couramment utilisé pour transférer et stocker des données entre différents systèmes. Lors du traitement de fichiers XML, vous rencontrez souvent des situations contenant des caractères spéciaux et des séquences d'échappement, qui peuvent provoquer des erreurs d'analyse ou une mauvaise interprétation des données. Par conséquent, lors de l’analyse de fichiers XML à l’aide de Python, nous devons comprendre comment gérer ces caractères spéciaux et ces séquences d’échappement. 1. Caractères spéciaux et

Comment gérer les formats de données XML et JSON dans le développement C# Comment gérer les formats de données XML et JSON dans le développement C# Oct 09, 2023 pm 06:15 PM

La gestion des formats de données XML et JSON dans le développement C# nécessite des exemples de code spécifiques. Dans le développement de logiciels modernes, XML et JSON sont deux formats de données largement utilisés. XML (Extensible Markup Language) est un langage de balisage permettant de stocker et de transmettre des données, tandis que JSON (JavaScript Object Notation) est un format d'échange de données léger. Dans le développement C#, nous devons souvent traiter et exploiter des données XML et JSON. Cet article se concentrera sur la façon d'utiliser C# pour traiter ces deux formats de données et les attacher.

Utiliser Python pour implémenter la vérification des données en XML Utiliser Python pour implémenter la vérification des données en XML Aug 10, 2023 pm 01:37 PM

Utiliser Python pour implémenter la validation des données en XML Introduction : Dans la vraie vie, nous traitons souvent de données diverses, parmi lesquelles XML (Extensible Markup Language) est un format de données couramment utilisé. XML a une bonne lisibilité et évolutivité et est largement utilisé dans divers domaines, tels que l'échange de données, les fichiers de configuration, etc. Lors du traitement de données XML, nous devons souvent vérifier les données pour garantir leur intégrité et leur exactitude. Cet article présentera comment utiliser Python pour implémenter la vérification des données en XML et donnera le correspondant

Convertir POJO en XML à l'aide de la bibliothèque Jackson en Java ? Convertir POJO en XML à l'aide de la bibliothèque Jackson en Java ? Sep 18, 2023 pm 02:21 PM

Jackson est une bibliothèque basée sur Java utile pour convertir des objets Java en JSON et JSON en objets Java. JacksonAPI est plus rapide que les autres API, nécessite moins de zone mémoire et convient aux objets volumineux. Nous utilisons la méthode writeValueAsString() de la classe XmlMapper pour convertir le POJO au format XML, et l'instance POJO correspondante doit être passée en paramètre à cette méthode. Syntaxe publicStringwriteValueAsString(Objectvalue)throwsJsonProcessingExceptionExampleimp

PHP est-il front-end ou back-end dans le développement Web ? PHP est-il front-end ou back-end dans le développement Web ? Mar 24, 2024 pm 02:18 PM

PHP appartient au backend du développement Web. PHP est un langage de script côté serveur, principalement utilisé pour traiter la logique côté serveur et générer du contenu Web dynamique. Par rapport à la technologie front-end, PHP est davantage utilisé pour les opérations back-end telles que l'interaction avec les bases de données, le traitement des demandes des utilisateurs et la génération du contenu des pages. Ensuite, des exemples de code spécifiques seront utilisés pour illustrer l'application de PHP dans le développement back-end. Tout d'abord, regardons un exemple de code PHP simple pour se connecter à une base de données et interroger des données :

Comment activer l'accès administratif à partir de l'interface utilisateur Web du cockpit Comment activer l'accès administratif à partir de l'interface utilisateur Web du cockpit Mar 20, 2024 pm 06:56 PM

Cockpit est une interface graphique Web pour les serveurs Linux. Il est principalement destiné à faciliter la gestion des serveurs Linux pour les utilisateurs nouveaux/experts. Dans cet article, nous aborderons les modes d'accès à Cockpit et comment basculer l'accès administratif à Cockpit depuis CockpitWebUI. Sujets de contenu : Modes d'entrée du cockpit Trouver le mode d'accès actuel au cockpit Activer l'accès administratif au cockpit à partir de CockpitWebUI Désactiver l'accès administratif au cockpit à partir de CockpitWebUI Conclusion Modes d'entrée au cockpit Le cockpit dispose de deux modes d'accès : Accès restreint : il s'agit de la valeur par défaut pour le mode d'accès au cockpit. Dans ce mode d'accès vous ne pouvez pas accéder à l'internaute depuis le cockpit

See all articles