Skip to content

Fix: getCookie() überschreibt Core-Funktion, Verzeichnisschutz-Check prüft „redaxo/null“ - #215

Merged
skerbis merged 1 commit into
FriendsOfREDAXO:mainfrom
alexwenz:fix/getcookie-global-collision
Oct 30, 2026
Merged

skerbis merged 1 commit into
FriendsOfREDAXO:mainfrom
alexwenz:fix/getcookie-global-collision

Conversation

@alexwenz

Copy link
Copy Markdown
Member

Problem

assets/quick-navigation.js definiert eine globale Funktion getCookie(). Sie wird nach der standard.js des Cores geladen und ersetzt deren gleichnamige Funktion. Der Unterschied: Die Core-Version liefert bei fehlendem Cookie '', die Addon-Version null.

Der Verzeichnisschutz-Check ab REDAXO 5.21.5 prüft ein Verzeichnis pro Tag und merkt sich einen Treffer im Cookie rex_directory_protection_check:

var previousInsecureUrl = getCookie('rex_directory_protection_check');
var url = previousInsecureUrl !== '' ? previousInsecureUrl : urls[...];

Mit null greift !== '', und statt eines echten Verzeichnisses wird redaxo/null abgefragt. Das hat zwei Folgen:

  • Der Check läuft ins Leere. In der Regel antwortet der Server auf redaxo/null mit 404. Der Check meldet nichts, der Cookie wird 1, nach 24 Stunden geht es von vorn los. bin/, data/, src/ und cache/ werden bei aktivem quick_navigation also nie geprüft. Ein tatsächlich ungeschütztes Verzeichnis bliebe unbemerkt.
  • Fehlalarm, wo redaxo/null mit 2xx beantwortet wird, z. B. wenn eine Rewrite-Regel unbekannte Pfade unter /redaxo/ ans Frontend weitergibt. Dann zeigt das Backend „The directory redaxo/null is insecure“, und weil der Wert im Cookie bleibt, kommt die Meldung jeden Tag wieder.

Der alte Check bis 5.21.4 verglich nur mit == '' und war deshalb nicht betroffen.

Änderung

  • Hilfsfunktion umbenannt in quickNavigationGetCookie() (passend zu quickNavigationFilterInit() und quickNavigationGetUrlVars()). Der einzige Aufruf (Mediensortierung) ist angepasst, Verhalten dort unverändert dank || "date".
  • CHANGELOG-Eintrag unter „Unveröffentlicht“. package.yml ist nicht angefasst.

Nachstellen

  1. REDAXO ≥ 5.21.5 mit quick_navigation 9.x
  2. Cookie rex_directory_protection_check löschen, Backend neu laden
  3. Im Network-Tab erscheint eine Anfrage auf redaxo/null?redaxo-security-self-test

Getestet

REDAXO 5.21.6, quick_navigation 9.1.0, Cookie vor jedem Aufruf gelöscht:

  • ohne Fix: Anfrage auf redaxo/null (404)
  • mit Fix: Anfragen auf src/core/boot.php und data/.redaxo (jeweils 403), getCookie('fehlt') liefert wieder ''
  • Mediensortierung im Medienpool: Umschalten filename → title → date funktioniert, keine JS-Fehler

…heck meldet redaxo/null)

Die globale Hilfsfunktion getCookie() ersetzte die gleichnamige Funktion
aus der standard.js des Cores und lieferte bei fehlendem Cookie null statt
''. Der Verzeichnisschutz-Check ab REDAXO 5.21.5 prüfte dadurch redaxo/null.
Umbenannt in quickNavigationGetCookie().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@skerbis
skerbis merged commit 34c6ffa into FriendsOfREDAXO:main Oct 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants