Newsletter
DBConcepts Logo Original

Oracle APEX: HTML Tags bei Substitution Syntax

Oracle APEX: HTML Tags bei Substitution Syntax

In Oracle APEX können Page und Application Items auf mehrere Arten verwendet werden. Mittels Bind-Syntax (:PXXX_ITEM) etwa in SQL oder PL/SQL Ausdrücken oder mittels Substitution-Syntax in Texten. Das bedeutet wir können beispielsweise in einem Page Process ein Hidden Page Item mit einem Wert versorgen, wie der Erfolgsmeldung eines Funktionsaufrufs, und dieses dann per Substitution-Syntax als Erfolgsmeldung ausgeben lassen (siehe folgender Screenshot).

Bild1
Screenshot 1

Wenn nun HTML-Tags in dem Rückgabewert sind, dann werden diese escaped und damit im Klartext angezeigt, was das folgende Verhalten verursacht.

Bild2

Leider gibt es keine offensichtliche deklarative Möglichkeit, dieses Verhalten zu unterbinden. HTML-Tags werden bei der Verwendung der Substitution Syntax aus Sicherheitsgründen (Stichwort XSS – Cross Site Scripting) immer escaped. Man kann allerdings in der Substition-Syntax Zusätze wie !RAW verwenden, wodurch sich das Escape Verhalten beeinflussen lässt. Der !RAW Zusatz zum Beispiel bewirkt, dass der Text as-is, also exakt so wie er gespeichert ist ausgegeben wird (VORSICHT: Bei Texten über die man keine 100%ige Kontrolle hat, weil sie z.B. durch User Eingaben entstehen ist das eine massive Sicherheitslücke in Bezug auf Cross Site Scripting!!!). Die Zusätze bestehen immer aus einem ! und einem vordefinierten Filterbegriff welche direkt VOR dem Punkt am Ende ergänzt, also z.B. &PXXX_ITEM!RAW. Wenn wir also die oben gezeigte Logik auf folgenden Aufruf anpassen

Bild3

Dann sieht die Erfolgsmeldung wie folgt aus

Abgesehen von RAW gibt es lt. Doku noch folgende Optionen:

  • HTML: escaped HTML-reservierte Zeichen (ident zur Funktion HTML im Package APEX_ESCAPE)
  • ATTR: escaped Zeichen, welche für HTML-Attribute reserviert sind (ident zur Funktion HTML_ATTRIBUTE im Package APEX_ESCAPE)
  • JS: escaped Zeichen, die im Javascript Kontext reserviert sind (ident zur Funktion JS_LITERAL im Package APEX_ESCAPE)
  • STRIPHTML: entfernt alle HTML-Tags aus dem Wert und escaped alle HTML-reservierten Zeichen

Informationen dazu findet ihr hier.

DBConcepts

Weitere Beiträge

DBConcepts Adventpunsch

Am Dienstag, den 03.12 findet heuer unser allseits beliebter Adventpunsch statt. Dieses Jahr treffen wir uns wieder im Weihnachtsdorf im Alten AKH (Universitätscampus).Wir haben einen eigens für uns

DBConcepts

Newsletter abonnieren

Wir freuen uns, dass wir Ihr Interesse für den Newsletter geweckt haben! Mit dem Versand dieser Zustimmung erhalten Sie regelmäßig alle aktuellen Informationen!

Vielen Dank für Ihr Interesse an unserem Unternehmen. Derzeit suchen wir niemanden für diese Stelle. Aber wir sind immer an talentierten Menschen interessiert und freuen uns von Ihnen zu hören! Schicken Sie uns einfach Ihren Lebenslauf und eine kurze Nachricht und schreiben Sie an welcher Stelle Sie interessiert sind: recruitment@dbconcepts.com. Wir freuen usn von Ihnen zu hören!