Bei Study anmelden

Diese Seite ist der öffentliche eMedys-Auftritt. Dein Konto und deine privaten Inhalte laufen auf Study; die Anmeldung öffnet sich dort in einem eigenen Fenster.

Ein Filterwert ist kein fertiger Filter

LDAP-Steuerzeichen an der Grenze zwischen Daten und Grammatik behandeln.

Ein LDAP-Filter ist eine Suchgrammatik. Wird ein Suchwort als Filterwert eingefügt, müssen unter anderem Stern, Klammern, Backslash und Nullbyte als Daten darstellbar bleiben. RFC 4515 beschreibt dafür hexadezimale Escape-Sequenzen; der Stern erhält beispielsweise \2a. Unser kurzer Helfer zeigt die relevanten ASCII-Zeichen im erfundenen Wert A*(B). Er ist keine vollständige Bibliothek für beliebige Bytefolgen. Entscheidend ist die Einsatzstelle: Ein Wert-Escaper bekommt den Suchwert, während die Struktur des Filters vom Programm kommt. Den gesamten fertigen Filter als Wert zu escapen würde die beabsichtigte Struktur verändern.

Ein Beispiel

Das Label A*(B) soll wörtlich gesucht werden. Als Filterwert wird daraus A\2a\28B\29. Der HTML-Helfer würde Stern und Klammern unverändert lassen, weil sie in gewöhnlichem HTML-Text nicht dieselbe Steuerrolle besitzen. Der Name 'escape' allein reicht deshalb nicht als Auswahlregel. Python 3.11 · Lehrbeispiel def ldap_demo(value): escapes = {'\\': r'\5c', '*': r'\2a', '(': r'\28', ')': r'\29', '\0': r'\00'} return ''.join(escapes.get(char, char) for char in value) print(ldap_demo('A*(B)')) Erwartete Ausgabe A\2a\28B\29

Mit meinem Konto üben →

Alle Lernwege