Startseite / Vorlagenentwicklung / Sicherheit

Sicherheitsaspekte für die Projekt- und Vorlagenentwicklung

Inhaltsverzeichnis

Die Erstellung, Generierung und Auslieferung von Inhalten wird innerhalb der FirstSpirit-Umgebung durch umfangreiche Sicherheitsmechanismen geschützt (u.a. Authentifizierungsverfahren, Zugriffsberechtigungen,...).

Das entbindet den FirstSpirit-Entwickler jedoch nicht von der Aufgabe, die mit FirstSpirit generierten Seiten vor unberechtigten Zugriffen zu schützen. Viele potenzielle Schwachstellen und Sicherheitsprobleme in Webseiten könnten bereits im Vorfeld durch ein durchdachtes Design des Projekts und eine gute Implementierung der FirstSpirit-Vorlagen unterbunden werden.

Die folgenden Beispiele erläutern häufige Angriffsziele und Schwachstellen in der Programmierung von Websites und zeigen einfache Lösungswege auf.

Wichtig Die vorgestellten Beispiele decken nicht alle Sicherheitsaspekte vollständig ab und sind kein Ersatz für eine individuelle und detaillierte Sicherheitsanalyse eines Projekts (falls notwendig). Sie sollen lediglich als Hilfestellung bei der Projektentwicklung dienen und exemplarisch auf mögliche Schwachstellen hinweisen.

Cross-Site-Scripting (XSS) unterbinden

Beim Cross-Site-Scripting versucht der Angreifer, mithilfe von Skriptsprachen über herkömmliche Eingabemöglichkeiten (z. B. Formulare) in einen vertrauenswürdigen Kontext zu gelangen, um dort auf vertrauenswürdige Daten und Informationen (z. B. Passwörter) zuzugreifen oder Anwendungen zu manipulieren. Erfolgreiche XSS-Angriffe auf Webanwendungen können beispielsweise erfolgen, indem Benutzereingaben von der Webanwendung ungeprüft an den Browser weitergeleitet werden. Fügt der Angreifer in einem einfachen Formularfeld ein Skript ein und übermittelt diese Eingabe an die Webanwendung, kann die Anwendung diesen Aufruf ungeprüft an den Browser übermitteln. In diesem Fall entsteht eine XSS-Sicherheitslücke. Dieses Verhalten kann durch eine vorausschauende Vorlagenentwicklung aber bereits im Vorfeld unterbunden werden.

Beispiel: Sonderzeichen durch HTML-konforme Zeichen ersetzen

Die Namen von Seiten und Menüebenen werden über Eingabeformulare vergeben und können ungefiltert in die HTML-Ausgabe der Seite gelangen (z. B. über eine Navigationsfunktion innerhalb der HTML-Vorlage) und bieten damit einen möglichen Angriffspunkt für XSS-Angriffe.

Lösung: Innerhalb der HTML-Vorlage kann diese Sicherheitslücke relativ einfach durch eine Zeichenkonvertierung unterbunden werden. Die Ausgabe der Seiten- und Menünamen erfolgt im HTML-Kanal $CMS_VALUE(#nav.label)$. Wird der String ungefiltert ausgegeben, können auch Skriptaufrufe in die Namensfelder geschrieben werden, z. B.:

<script>alert('XSS');</script>

Um diese Sicherheitslücke zu schließen, kann der Vorlagenentwickler die Methode .convert2() (in Bean-Syntax: .convert2) verwenden, also $CMS_VALUE(#nav.label.convert2)$. Die Funktion convert2 bewirkt, dass nicht-HTML-konforme Zeichen durch die Konvertierungs-Regeln (→Dokumentation für Administratoren) durch HTML-konforme Zeichen ersetzt werden. Zusätzlich können HTML- bzw. XML-eigene Zeichen quotiert werden. Der Entwickler sollte sicherstellen, dass mindestens die Zeichen:

  • < und >
  • ' und "

quotiert werden bzw. in der verwendeten Konvertierungsregel (für den Vorlagensatz) enthalten sind.

Der Skriptaufruf wird nun in der HTML-Ausgabe konvertiert zu:

&lt;script&gt;alert(&#39;XSS&#39;)&lt;/script&gt;

Beispiel einer Navigationsfunktion mit Zeichenkonvertierung:

<CMS_FUNCTION name="Navigation" resultname="pt_subNavigation"> 
   <CMS_ARRAY_PARAM name="unselectedHTML"> 
<CMS_ARRAY_ELEMENT index="1..4"><![CDATA[<li><a href="$CMS_REF(#nav.ref)$">$CMS_VALUE(#nav.label.convert2)$</a></li>]]></CMS_ARRAY_ELEMENT>
   </CMS_ARRAY_PARAM> 
</CMS_FUNCTION> 

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.5 | Datenschutz