WP Manifestindependent plugin directory
manifest / security / rrze-ac

RRZE Access Control

WordPress Plugin for protection of files/documents through user and network related functions

by RRZE Webteam · github.com/rrze-webteam/rrze-ac · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/rrze-webteam/rrze-ac/archive/refs/heads/main.zip

Das Plugin ermöglicht den eingeschränkten Zugriff auf Dateien und Seiten durch benutzerbezogene Funktionen und IP-Adressen.

Contributors

GNU General Public License (GPL) Version 3

Documentation

See documenation at https://www.wp.rrze.fau.de

Feedback

Entwicklerhinweise

Zugriffsberechtigungen werden als Website-Option gespeichert und können ausschließlich von Administratoren angelegt oder bearbeitet werden. Die unter „Allgemein“ festgelegte Mindestrolle darf bestehende Berechtigungen in Seiten und Medien auswählen und ändern, jedoch keine Berechtigungsdefinitionen verwalten.

SSO-Optionen erscheinen nur, wenn rrze-sso/rrze-sso.php installiert und für die Website oder das Netzwerk aktiviert ist. Das Plugin prüft geschützte Inhalte auch in der WordPress-REST-API, jedoch ausschließlich für die Core-Ressourcen /wp/v2/pages/{id} und /wp/v2/media/{id}; REST-Endpunkte anderer Plugins werden nicht beeinflusst.

Zentrale technische Konstanten wie Optionsnamen, Transient-Präfixe, Pfade und Cookie-Einstellungen liegen in includes/Config.php. Versions- und Plugin-Metadaten werden aus package.json in den Plugin-Header und die readme.txt synchronisiert. Änderungen an Quell-Assets werden über die npm-Skripte gebaut; erzeugte Dateien im Verzeichnis build/ werden nicht manuell bearbeitet.

Informative Protokollmeldungen werden nur bei aktivierter Debugging-Option an rrze.log.info gesendet. Fehlgeschlagene Passworteingaben werden unabhängig davon an rrze.log.warning protokolliert.

Besucher-IP und Reverse Proxys

Standardmäßig verwendet AC ausschließlich REMOTE_ADDR. Besucher-IP-Freigaben begründen kein Vertrauen in Proxy-Header. Wenn PHP hinter einem Reverse Proxy dessen Adresse als REMOTE_ADDR erhält, müssen die tatsächlichen Infrastruktur- Proxys ausdrücklich über rrze_trusted_proxies konfiguriert werden. Dieser Filter wird gemeinsam mit RRZE Settings und Private Site verwendet, beispielsweise in einem administrierten MU-Plugin:

add_filter('rrze_trusted_proxies', static function ($proxies) {
    // Dokumentationsadressen durch die tatsächlichen Proxy-Adressen ersetzen.
    return ['192.0.2.10', '2001:db8:1234::/64'];
});

Nur vertrauenswürdige direkte Absender dürfen X-Forwarded-For liefern. Die Kette wird von rechts bis zur ersten nicht vertrauenswürdigen Adresse geprüft. Proxys müssen ihren direkten Absender anhängen oder eingehende Header durch verifizierte Werte ersetzen. Ohne gültige Besucheradresse hinter einem konfigurierten Proxy wird keine IP-Ausnahme gewährt; die Proxy-IP dient nicht als Ersatz.

Einzeladressen und CIDR-Netze werden für IPv4 und IPv6 unterstützt. Setzt bereits der Webserver REMOTE_ADDR auf die verifizierte Besucheradresse, bleibt die Proxy-Liste leer. Vor dem Einsatz hinter Reverse Proxys ist diese Konfiguration zu prüfen. Besucherbereiche werden nicht automatisch als Proxys übernommen.

Die Regressionstests prüfen REST-Routen, Collection-Freigaben und IP-/Proxy-Auswertung ohne Datenbank- oder HTTP-Zugriffe.

Cookies

Für eine veröffentlichte Seite mit passwortbasierter Zugangsberechtigung setzt das Plugin nach erfolgreicher Passworteingabe den Cookie rrze_ac_password_{Beitrags-ID}. Er enthält den verschlüsselten Passwortwert und ermöglicht den erneuten Zugriff auf genau diese Seite, ohne das Passwort erneut einzugeben. Der Cookie gilt eine Stunde, wird nur über HTTPS übertragen, ist nur serverseitig lesbar (HttpOnly), verwendet SameSite=Lax sowie den von WordPress vorgegebenen Cookie-Pfad und die Cookie-Domain. Bei allen anderen Zugriffsarten setzt das Plugin keine Cookies.