SSI
|
|
[ Installation/Konfiguration ] [ Status/Info ] [ UserDir ] [ Virtuelle Hosts ] [ Authentifizierung ] [ CGI ] [ mod_perl ] [ PHP ] [ SSI ] [ SSL ] [ WebDAV ] [ Log-Dateien ] [ ht://Dig ]
Hinter dem Begriff: SSI (Server Side Includes)
steht ein Mechanismus, durch den ein Dokument vor der Auslieferung an einen
Browser vom Apache auf Include-Anweisungen hin untersucht wird. Beispielsweise
kann ein Dokument über eine Include-Anweisung in ein anderes Dokument
eingebunden werden, oder einem Dokument wird der Inhalt einer Umgebungsvariablen
hinzugefügt. Auf der Client-Seite ist von all dem nichts zu bemerken.
Auf diese Weise lassen sich wiederkehrende Elemente wie Menüleisten, Fußzeilen
oder Adressen ganz einfach in eine beliebig große Zahl von Seiten einbetten.
Muss später etwas verändert werden, brauchen nur die ausgelagerte Elemente
angepasst zu werden, nicht jedoch die Seiten selbst. SSI ist nicht
vom Browser abhängig, da es vom Server verarbeitet wird. Ein
SSI-Befehl ist
folgendermaßen aufgebaut:
Syntax:
<!--#element attribut=wert
attribut=wert ... -->
Die folgende SSI-Anweisung gibt z.B. den Inhalt der Variablen
'DATE_LOCAL' aus:
<!--#echo
var="DATE_LOCAL" -->
Die Einbindung in HTML-Kommentare ist nötig, damit der Server
SSI-Befehle erkennen kann. Außerdem werden so die Befehle nicht direkt auf der
Seite angezeigt, selbst wenn der Server SSI nicht unterstützt.
Aktivierung von SSI
Standardmäßig ist der Apache2-Webserver unter Debian nicht für SSI konfiguriert,
jedoch schon gewissermaßen vorbereitet. Damit SSL unterstützt wird, müssen die
Konfigurationsdateien angepasst werden. Als erstes ist die
Hauptkonfigurationsdatei: 'apache2.conf' anzupassen:
Auszug aus: /etc/apache2/apache2.conf
(ca. ab Zeile: 202 und 343) |
...
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
index.shtml
... |
...
# To use server-parsed HTML files
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
<FilesMatch "\.shtml(\..+)?$">
SetOutputFilter INCLUDES
</FilesMatch>
... |
Damit auch Seiten wie: 'index.shtml' beim Wechseln in ein Verzeichnis sofort
angezeigt werden, sollte der Direktive: 'DirectoryIndex' um 'index.shtml'
erweitert werden.
Weiterhin sollten die Zeilen: 'AddType text/html .shtml' und 'AddOutputFilter
INCLUDES .shtml' oberhalb der Zeile: '<FilesMatch
"\.shtml(\..+)?$">' eingefügt werden. Mit den beiden
Zeilen wird dem Webserver mitgeteilt, dass alle Dateien mit der Endung '.shtml' als
html-Seiten behandelt werden und durch den
SSI-Prozessor geparst werden.
Als nächstes ist festzulegen in welchen Verzeichnissen bzw. virtuellen Webs
die Verwendung von SSI möglich sein soll. Dazu ist die entsprechende
Konfigurationsdatei im Verzeichnis: '/sites-available' in diesem Beispiel die
Datei: 'default' zu verändern:
Auszug aus: /etc/apache2/sites-available/default
(ca. Zeile: 11) |
NameVirtualHost *
<VirtualHost *>
ServerAdmin
webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
+IncludesNOEXEC
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#
RedirectMatch ^/$ /apache2-default/
</Directory>
... |
Die eigentliche Freigabe geschieht mit der
Options-Anweisung. Dabei gibt es drei Möglichkeiten:
- Mit der Option '-Include' oder 'None' werden keine
SSL-Anweisungen interpretiert.
- Mit der Option '+Includes' werden alle
SSL-Anweisungen interpretiert.
- Mit der Option 'IncludesNOEXEC' werden alle
SSL-Anweisungen mit Ausnahme der
EXEC-Anweisungen interpretiert.
Als letzter Schritt ist das Modul: 'include', welches für SSI zuständig ist
zu aktivieren. Am einfachsten kann dieses mit auf der Kommandozeile mit:
a2enmod include
erledigt werden. Der Apache-Server ist daraufhin neu zu starten.
Anmerkungen
Um zu überprüfen ob der Web-Server nun SSI versteht, sollte
man eine kleine Testdatei erzeugen. Diese Testdatei
sollte die Endung: '.shtml' besitzen und in ein SSI-fähiges Verzeichnis auf dem
Web-Server
eingebracht werden. Hier ein kleines Beispiel mit SSI:
SSI-Testprogramm: printenv.shtml |
<!doctype html public
"-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.72 [en] (WinNT; I)
[Netscape]">
<title>SSI-Testpage -printenv-</title>
</head>
<body>
<tt>SSI-Testpage -printenv-<br>
=======================</tt>
<pre><!--#printenv --></pre>
</body>
</html> |
Bei der Testdatei handelt es sich um eine einfache
html-Datei die nur eine
parameterlose SSI-Anweisung: ('<!--#printenv -->')
enthält.
Durch Aufruf mittels Browser mit: 'http://<localhost>/printenv.shtml'
sollten alle Variablen und deren Werte, die per SSI verfügbar sind, ausgegeben
werden.
Diese Anweisung: ('<!--#printenv -->') erleichtert zwar das Debuggen, enthält aber auch
Informationen für mögliche Angreifer. Diese Anweisung sollte daher nicht in Dokumenten
enthalten sein, die öffentlich zugänglich sind.
Weitere Infos
[ Home ] [ Nach oben ] [ Installation/Konfiguration ] [ Status/Info ] [ UserDir ] [ Virtuelle Hosts ] [ Authentifizierung ] [ CGI ] [ mod_perl ] [ PHP ] [ SSI ] [ SSL ] [ WebDAV ] [ Log-Dateien ] [ ht://Dig ]
letzte Änderung:
28. Januar 2008 |