Kann ich Apache httpd so konfigurieren, dass alle Anforderungsheader entfernt/ersetzt werden, die einem Muster entsprechen?

Kann ich Apache httpd so konfigurieren, dass alle Anforderungsheader entfernt/ersetzt werden, die einem Muster entsprechen?

Ich verwende Apache httpd als Reverse-Proxy vor einer Webanwendung. Die Authentifizierung erfolgt über ein Modul (mod_auth_mellon), das verschiedene Anforderungsumgebungsvariablen mit Details zum authentifizierten Benutzer (Benutzername, Anzeigename usw.) setzt.

Ich verwende mod_headers, um Header aus der eingehenden Anfrage zu entfernen und sie durch den Wert der Anfrageumgebungsvariablen zu ersetzen, die von mod_auth_mellon festgelegt wurden.

RequestHeader unset mellon_uid
RequestHeader set mellon_uid "%{mellon_uid}e" env=mellon_uid

Somit wird jeder vom Client bereitgestellte mellon_uidHeader verworfen. Wenn mod_auth_mellon davon ausgeht, dass der Benutzer angemeldet ist, mellon_uidwird der Anfrage ein neuer Anfrageheader hinzugefügt, der an die Webanwendung weitergeleitet wird.

Bisher konnte ich dies mithilfe von mod_macro handhabbar machen:

Use Attribute uid
Use Attribute display_name
Use Attribute email

... und so weiter, wobei es Attributesich um ein Makro handelt, das RequestHeaderfür das angegebene Attribut zu den beiden oben genannten Anweisungen erweitert wird.

Einige Benutzerdetails sind jedoch mehrwertig, für die mod_auth_mellon mehrere Anforderungsumgebungsvariablen in der Form festlegt:

mellon_foo_0 = first
mellon_foo_1 = second
mellon_foo_2 = third
mellon_foo_N = 3

Da die Anzahl der Werte für ein Attribut variieren kann, kann ich mich bei derartigen Verarbeitungen nicht auf eine statische Variablenliste verlassen.

Ich möchte die Verwendung von vermeiden MellonMergeEnvVars. Stattdessen würde dadurch Folgendes festgelegt:

mellon_foo = first;second;third
mellon_foo_N = 3

... denn das bedeutet, dass die Webanwendung nun mit der Komplexität der korrekten Analyse des mellon_fooAnforderungsheaders, dem Umgang mit Werten, die selbst Semikolons enthalten, usw. fertig werden muss. Tatsächlich ist mir nicht klar, ob mod_auth_mellon ein Escape-Zeichen durchführt, was eine eindeutige Analyse unmöglich macht (wenn ich recht habe ...)

Antwort1

Ich denke, solange Sie nur die ersten mellon_foo_NWerte betrachten, sollte hier kein Risiko bestehen, da mod_auth_mellon diese Werte immer selbst festlegt und alle Werte überschreibt, die der Benutzer möglicherweise zu senden versucht. Es sollte auch immer festgelegt sein mellon_foo_N, aber Sie können es zur Sicherheit immer zunächst aufheben.

verwandte Informationen