Verhinderung von LDAP-injection

Arbeite ich auf meinem ersten desktop-app, die LDAP-Abfragen. Ich arbeite in C unter unix und mit opends, und ich bin neu auf LDAP. Nach woking eine Weile auf, habe ich bemerkt, dass der Benutzer in der Lage sein könnte zu verändern, die LDAP-Abfrage durch die Injektion von bösartigem code.

Ich würde gerne wissen, welche die Desinfektion der Techniken sind bekannt, nicht nur für C/unix Entwicklung, sondern im Allgemeinen, D. H., web-Entwicklung, etc.

Ich dachte, dass die Flucht gleich, und Semikolons, die ausreichen würde,, aber nicht sicher.

Hier ist ein Stückchen code, so kann ich klarer die Frage:

 String ldapSearchQuery = "(cn=" + $userName + ")";
 System.out.println(ldapSearchQuery); 

Offensichtlich brauche ich wirklich zu bereinigen, $userName, wie bereits in diesem OWASP ARTIKEL

  • Es gibt einen RFC spricht über Flucht LDAP-Suche nach Filter (ietf.org/rfc/rfc2254.txt), aber es ist nicht auf Sicherheit konzentrieren. Allerdings listet es die folgenden, denen die Flucht: * ()\, und NUL (0x00). So würde ich hinzufügen, der Stern und der backslash auf Ihrer Liste. Konnte keine wirklich maßgebliche Quelle zu diesem Thema. Nicht sicher, ob es gibt einige unicode-Winkel, den Sie brauchen zu kümmern, als auch. Persönlich habe ich eine sehr restriktive white-list (Ziffern, Zeichen, Unterstrich und Leerzeichen) Ansatz auf meine Umsetzung.
  • +1 gute Frage.
  • möglich, Duplikat der Wie entgeht man einem string in C#, für die Verwendung in einer LDAP-Abfrage
  • Danke, ich würde eher sagen im Zusammenhang, anstatt zu duplizieren. Aber danke trotzdem, gute Frage, nehmen Sie es als eine zusätzliche Referenz (ich sah es nicht, vor dem posten meiner Frage).
  • ja, auf jeden Fall verwandt. Duplizieren ist so ein subjektiver Begriff in diesen Tagen. 🙂
  • haha Zustimmen. Paar Stimmen übrig, um diese zu schließen es. Glaube nicht, dass so interessante und sprachneutral Frage sollte geschlossen werden.

InformationsquelleAutor Matias | 2010-06-12
Schreibe einen Kommentar