So schützen Sie sich vor LDAP-Injection

8

Wir bauen eine Anwendung auf, die LDAP über PHP nutzt, und ich habe gedacht, dass es etwas gibt, was Sie tun können, wenn Sie in LDAP injizieren und noch besser, wie schützt man sich vor LDAP-Injektionen?

    
Chris 18.08.2010, 18:34
quelle

5 Antworten

9

Beim Erstellen von LDAP-Filtern müssen Sie sicherstellen, dass Filterwerte gemäß RFC2254 :

  

Irgendwelche Steuerzeichen mit einem ACII   Code & lt; 32 sowie die Charaktere   mit besonderer Bedeutung in LDAP-Filtern   "*", "(", ")" und "\" (der umgekehrte Schrägstrich)   werden in die Darstellung umgewandelt   eines Backslash, gefolgt von zwei hex   Ziffern, die das Hexadezimale darstellen   Wert des Zeichens.

Zend_Ldap verwendet beispielsweise die folgende Routine

%Vor%     
Stefan Gehrig 19.08.2010, 07:03
quelle
2

Zu beachten ist, dass eine LDAP-Bindung mit einem Benutzernamen (DN) verknüpft ist, aber kein Kennwort als anonyme Bindung gilt. Daher sollten Sie testen, ob die übergebenen Anmeldeinformationen über LDAP gebunden werden können, um den Benutzer zu validieren. Wenn sie ein leeres Kennwort übergeben und es so übergeben haben, wie es ist, könnten Sie jemanden falsch eingeben.

    
geoffc 18.08.2010 18:47
quelle
1

In den meisten Fällen wird ein schreibgeschütztes Konto für LDAP verwendet. Da LDAP bei Schreibvorgängen schlecht ist, finden Aktualisierungen nur in sehr kleinen Bereichen der Anwendung statt, in denen ein anderes Konto verwendet werden kann.

Auch dann sind die Abfragesprache und die Aktualisierungssprache vollständig getrennt.

Um sich vor dem Anzeigen unerwünschter Informationen zu schützen, behandeln Sie alle Benutzereingaben als fehlerhaft und stellen Sie sicher, dass beschädigte Daten niemals verwendet werden, bevor sie geparst, bereinigt und ordnungsgemäß maskiert und in eine saubere Variable kopiert werden.

Ebenso können Sie nur die Daten aus der Antwort auswählen und diese zur Anzeige zurückgeben.

    
Peter Tillemans 18.08.2010 18:43
quelle
1

In PHP 5.6+ sollten Sie die Funktion ldap_escape für Filterwerte und RDNs verwenden. Wie:

%Vor%

Wenn Sie außerdem eine Benutzereingabe für Attributnamen in Suchvorgängen akzeptieren, sollten Sie bestätigen, dass es ein akzeptabler OID- oder Attributname ist. Sie können das mit einer Funktion wie folgt tun:

%Vor%     
ChadSikorra 30.06.2016 19:28
quelle
0
%Vor%     
Eugene 30.06.2016 10:22
quelle

Tags und Links