Oracle APEX · · 3 Min.

Session State Protection in APEX richtig einsetzen

Wie Checksumme, Seitenschutz und sichere Navigations-URLs zusammenarbeiten – mit einer kurzen Praxis-Checkliste.

Ein APEX-Link sieht oft harmlos aus: f?p=100:10:123456::NO::P10_ID:42. Trotzdem können Request-, Clear-Cache- oder Item-Argumente die Session State einer Anwendung beeinflussen. Werden Werte ungeprüft akzeptiert, kann ein Benutzer beispielsweise einen Datensatzkontext verändern oder interne Abläufe auslösen. Session State Protection (SSP) ist deshalb ein wichtiger Sicherheitsbaustein für jede Anwendung, die Parameter in URLs verwendet.

Merksatz: Autorisierung beantwortet, wer etwas darf. SSP stellt zusätzlich sicher, dass URL-Argumente nicht unbemerkt verändert wurden.

1. SSP auf Anwendungsebene aktivieren

Aktivieren Sie Session State Protection zunächst in den Shared Components der Anwendung. Danach konfigurieren Sie den Schutz pro Seite und pro Item. Die Seite bestimmt, ob URL-Argumente grundsätzlich erlaubt sind; das Item legt fest, welche Stärke für einen übergebenen Wert erforderlich ist.

2. Die richtige Schutzstufe wählen

Für Seiten mit Parametern ist „Arguments Must Have Checksum“ meist der sinnvolle Ausgangspunkt. Wenn eine Seite überhaupt keine URL-Argumente benötigt, ist „No Arguments Allowed“ strenger. „No URL Access“ eignet sich für Seiten, die nur über interne Branches oder Prozesse erreicht werden sollen.

Bei Items reichen die Stufen von „Unrestricted“ bis „Restricted: May not be set from browser“. Für fachlich oder sicherheitsrelevante Werte sollte der Browser den Session State nicht frei setzen dürfen. Beachten Sie auch die Kompatibilität: Enthält eine URL mehrere Items, muss die erzeugte Checksumme zur strengsten Schutzstufe aller übergebenen Items passen.

3. URLs mit APEX erzeugen

Hardcodierte f?p=-Strings sind fehleranfällig, sobald Seiten, Session State oder Checksum-Anforderungen hinzukommen. Verwenden Sie für neue PL/SQL-Links bevorzugt APEX_PAGE.GET_URL; die Funktion erzeugt eine navigierbare APEX-URL und berücksichtigt die notwendigen Sicherheitsinformationen. In älteren Anwendungen kann APEX_UTIL.PREPARE_URL weiterhin relevant sein, Oracle empfiehlt für bessere Lesbarkeit jedoch APEX_PAGE.GET_URL.

APEX_PAGE.GET_URL(
  p_page   => 10,
  p_items  => 'P10_ID',
  p_values => l_ticket_id
)

Prüfen Sie danach im Browser bewusst, was passiert, wenn ein Parameter entfernt, verändert oder ergänzt wird. Eine Fehlermeldung oder verweigerte Navigation ist in diesem Fall ein gewünschtes Ergebnis.

4. Sicherheit testen und im Team verankern

  • Alle Seiten mit Request-, Clear-Cache- oder Name/Value-Argumenten identifizieren.
  • Für jedes übergebene Item klären, ob es wirklich aus dem Browser gesetzt werden darf.
  • Links aus Reports, Buttons und Branches auf generierte statt zusammengesetzte URLs umstellen.
  • Mit einem Testbenutzer manipulierte Parameter prüfen und die Anwendung auf unerwartete Datenzugriffe beobachten.

Fazit

Session State Protection ist kein Ersatz für Authorization Schemes oder serverseitige Prüfungen. Es verhindert aber eine häufige Fehlerklasse: dass URL-Argumente ohne gültige Integritätsprüfung Session State verändern. Wer Seitenschutz, Item-Schutz und URL-Erzeugung gemeinsam betrachtet, bekommt eine deutlich robustere APEX-Navigation – und kann Sicherheitsentscheidungen im Team nachvollziehbar dokumentieren.

Weiterführend: Oracle APEX 24.2: Preventing URL Tampering und die Dokumentation zu APEX_PAGE.GET_URL.