Ursprünglich diente die Hypertext Markup Language (HTML) ausschließlich für die Formatierung statischer Webseiten. Durch Server Side Includes (SSI) existiert jedoch mittlerweile die Möglichkeit, dynamische Inhalte direkt in HTML einzubinden, ohne Programmiersprachen wie PHP, Perl oder Python zu benutzen. Es handelt sich um kurze Skript-Befehle, die von Webservern nach einer Anfrage automatisch ausgeführt werden. Im Unterschied zu anderen Möglichkeiten arbeiten Server Side Includes sehr effizient und benötigen keine zusätzliche Software wie zum Beispiel Interpreter oder externe Datenbanken.
Wie funktionieren Server Side Includes?
Die Server Side Includes (SSI) wurden erstmalig von dem Apache 1.2 eingeführt, um HTML durch einfache, veränderbare Elemente zu ergänzen. Aufgrund ihrer hohen Funktionalität und der wachsenden Verbreitung übernahmen nahezu alle alternativen Anbieter wie Microsoft Windows IIS und nginx während ihrer Entwicklung die Erweiterung, so dass SSI mittlerweile bei fast jedem Webhosting ohne Einschränkungen genutzt werden kann. Mit Server Side Includes eingebettete Instruktionen interpretiert der Webserver in den meisten Fällen ohne jede weitere Konfiguration und liefert das Ergebnis als HTML-Dokument aus. Neben vielen Vorteilen können sie jedoch ebenfalls ähnlich wie SMTP-Smuggling ein Risiko für die IT-Sicherheit darstellen, wenn es einem Angreifer gelingt, eigene Befehle auf einen Server einzuschleusen.
Welche Aufgaben können Server Side Includes übernehmen?
Im Vergleich zu komplexen Programmiersprachen sind die Server Side Includes bewusst einfach gehalten und umfassen insgesamt weniger als 20 Kommandos. Dennoch lässt sich dadurch eine Webseite vielseitig erweitern, um Funktionen und Inhalte wie die folgenden zu integrieren:
- Ausgabe von Informationen wie Datum, Internetadresse oder Zahl der Besucher
- Einbettung von externen Dateien, speziell universell verwendeten HTML-Fragmenten
- Anlegen, Abrufen und Umschreiben von Cookies
- Unkompliziertes Aufrufen von CGI Skripten und unterschiedlichen Interpretern
- Ausführen von beliebigen Programmen oder Kommandos ohne grafische Oberfläche
- Setzen, Ändern oder Abrufen von Variablen und Parametern
- Fallunterscheidung von Bedingungen nach dem klassischen Format if/elif/else/endif
- Zugriff auf interne und externe Datenbanken über SQL-Befehle
- Überprüfung der Resultate von SSI Kommandos und individuelle Fehlermeldungen
Trotz der vergleichbar geringen Zahl an Befehlen eröffnen sich durch Server Side Includes diverse Möglichkeiten. Zu ihnen zählen unter anderem mehrsprachige Webseiten, die Einbindung verschiedener Datenbanksysteme oder eine zentrale Verwaltung und Verwendung von vielfach genutzten Elementen wie Header, Footer und Bildern.
Wie sind Server Side Includes aufgebaut?
Alle Server Side Includes bestehen aus einem Befehl, dem je nach Kontext mehrere Parameter oder kleine Codeschnipsel folgen. Daraus ergibt sich eine simple, übersichtliche Syntax:
#Befehl attribut=“wert1″ attribut2=“wert2″ …..
Die einführende Raute (#) markiert eine SSI-Kommandos und muss als Erkennungszeichen vor jedem Befehl stehen. Die anschließenden Parameter sind von der Anweisung abhängig und in der Menge nicht begrenzt. In der Regel stehen die Instruktionen immer als Kommentare in dem HTML-Code:
<!- Befehl (z. B. cookie/set/echo/include/if) arg1=“1234″ arg2=“abcd“ ->
Diese Einbettung verhindert in jedem Fall, dass der Code als Text dargestellt wird – das gilt, selbst wenn das System keine Server Side Includes unterstützt.
Was sind die Voraussetzungen, um Server Side Includes zu verwenden?
Die meisten Webserver – zum Beispiel Apache 2 oder nginx – unterstützen SSI über ein externes Modul, das bei jedem Start mit der globalen oder lokalen Konfiguration geladen werden muss. Als Erkennungsmerkmal, dass es sich um HTML-Code mit Server Side Includes handelt, haben sich die Dateiendungen .shtml oder .stm etabliert. Eine Alternative, die deren Verwendung verschleiert, ist der sogenannte X-Bit-Hack. Er kann entweder global auf dem Webserver oder lokal von jedem Administrator einer Webseite über den Eintrag „XBitHack on“ in einer .htaccess-Datei aktiviert werden. Bei ihm identifiziert der Webserver die SSI-Erweiterung, indem in den Zugriffsrechten für entsprechende Dateien das eXecute-Bit gesetzt wird, das ausführbare Skripte im Betriebssystem kennzeichnet.