0Pricing
Secure Coding & OWASP Top 10 for Backend · Leçon

Prévenir les injections XML et LDAP

Étendez la défense contre les injections au-delà de SQL et des commandes, jusqu’à XML (XXE) et LDAP. Apprenez comment des entrées non fiables corrompent ces interpréteurs et comment les neutraliser.

Prévenir les injections XML et LDAP est une leçon Secure Coding & OWASP Top 10 for Backend gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Secure Coding & OWASP Top 10 for Backend, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Secure Coding & OWASP Top 10 for Backend comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Injection Beyond SQL

You have seen SQL, command, and XSS injection. Any interpreter that mixes untrusted input with structure is at risk. Two often-missed backend targets are XML parsers and LDAP directories.

What Is XXE

XML External Entity (XXE) injection abuses XML parsers that resolve external entities. An attacker defines an entity that reads a local file or hits an internal URL.

<!DOCTYPE x [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<data>&xxe;</data>

What XXE Can Do

  • Read sensitive files from the server
  • Perform server-side request forgery to internal services
  • Cause denial of service via entity expansion

All from a parser feature most apps never need.

Disable External Entities

The core fix is to configure the parser to not resolve external entities or DTDs. This single setting closes XXE entirely.

factory.setFeature('http://apache.org/xml/features/disallow-doctype-decl', true);
factory.setExpandEntityReferences(false);

Prefer Safer Formats

Where possible, accept JSON instead of XML — it has no entity concept and no equivalent attack. If you must take XML, lock the parser down first.

What Is LDAP Injection

LDAP directories are queried with filter strings. If user input is concatenated into a filter, an attacker can alter the query logic — the LDAP analog of SQL injection.

// vulnerable: input goes straight into the filter
filter = '(uid=' + username + ')'

An LDAP Bypass

Submitting * or admin)(&) as a username can turn a precise filter into one that matches many entries or always succeeds, bypassing authentication.

Escape LDAP Special Characters

Neutralize the special characters * ( ) \ NUL by escaping them before they enter a filter.

def escape(s):
    out = ''
    for ch in s:
        if ch in '*()\\':
            out += '\\' + format(ord(ch), '02x')
        else:
            out += ch
    return out

Use Parameterized APIs

Best of all, use directory APIs that accept inputs as parameters rather than building filter strings by hand — the same principle that makes prepared SQL statements safe.

The Common Defense

Across SQL, command, XML, and LDAP the rule is identical: never let untrusted input change the structure of a query or document. Separate code from data with parameterization, escaping, or safe parser config.

Allow-List Validation

Add a layer of defense by validating input against an allow-list of acceptable values before it reaches any interpreter. Rejecting unexpected characters or formats early shrinks the attack surface for every injection class at once.

import re
if not re.fullmatch(r'[a-zA-Z0-9_.-]+', username):
    raise ValueError('invalid username')

Quick Check

Test your injection defense.

Recap

You extended injection defense to XML and LDAP:

  • XXE abuses external entities — disable DTDs and entity resolution
  • LDAP injection manipulates filters — escape special characters or use parameterized APIs
  • The universal rule: keep untrusted data out of structure

Questions Fréquemment Posées

La leçon « Prévenir les injections XML et LDAP » est-elle gratuite ?

Oui — le texte complet de « Prévenir les injections XML et LDAP » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Secure Coding & OWASP Top 10 for Backend, passe à CoddyKit PRO. Le cours Secure Coding & OWASP Top 10 for Backend comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Prévenir les injections XML et LDAP » ?

Étendez la défense contre les injections au-delà de SQL et des commandes, jusqu’à XML (XXE) et LDAP. Apprenez comment des entrées non fiables corrompent ces interpréteurs et comment les neutraliser. Tu pratiques Secure Coding & OWASP Top 10 for Backend avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Secure Coding & OWASP Top 10 for Backend ?

Aucune expérience préalable n'est requise. Secure Coding & OWASP Top 10 for Backend sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Prévenir les injections XML et LDAP » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Secure Coding & OWASP Top 10 for Backend ?

Oui. Chaque leçon Secure Coding & OWASP Top 10 for Backend inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Prévention des injections SQL
  2. Injection de commandes et de code
  3. Cross-Site Scripting (XSS) dans le backend
  4. Prévenir les injections XML et LDAP
← Retour à Secure Coding & OWASP Top 10 for Backend