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
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.
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.
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%Tags und Links php ldap code-injection