Sichere Downloads mit naw_securedl

Extension Key: naw_securedl

Einleitung

Manchmal kann es notwendig und sinnvoll sein, Dateien, die auf einer Website zum Download angeboten werden, in einem gewissen Maß abzusichern. So könnte man zum Beispiel PDF-Dateien mit firmeninternen Daten nur bestimmten Benutzergruppen zur Verfügung stellen.

Jetzt bietet TYPO3 zwar von Haus aus die Möglichkeit, Seiten oder Inhaltselemente nur angemeldeten Frontend-Benutzern zur Verfügung zu stellen, aber der Download von Dateien lässt sich auf diese Weise nicht komplett absichern. Denn selbst wenn sich der Link zum Download in einem abgesicherten Bereich der Website befindet, ist die Datei selber dadurch nicht geschützt. Jeder, der den Link auf irgendeine Art und Weise in Erfahrung bringt, kann diese Datei auch direkt downloaden.

Hier kommt jetzt die Extension naw_securedl zum Einsatz. Mit Hilfe dieser Extension können beliebige Dateitypen und Ordner auf dem Webspace gegen einen direkten Download abgesichert werden. Dazu leitet die Extension die direkten Links auf Dateien durch ein Skript um. Zusätzlich kann man die zu schützenden Verzeichnisse durch ein paar Zeilen in einer .htaccess-Datei gegen den direkten Zugriff schützen. Selbst, wenn jetzt der Link zur Datei bekannt ist, führt ein direkter Aufruf dieses Links nur zu einer Fehlermeldung.

Die Kombination von Frontend-Benutzergruppen und naw_securedl sorgt also für einen relativ sicheren Schutz der Dateien.

Installation

naw_securedl über den Extensionmanager installieren
Über den Extensionmanager installieren

Die Extension wird wie üblich über den Extensionmanager installiert. Suchen Sie dazu nach dem Extension-Key naw_securedl.

Konfiguration

Konfiguration im Extension Manager
Konfiguration im Extension Manager

Die Konfiguration der Extension wird direkt im Extensionmanager vorgenommen. Suchen Sie dazu im Bereich der installierten Extensions nach dem Extension Key. Unter TYPO3 6.x klicken Sie dann in der rechten Spalte auf das Zahnrad-Icon. 

In TYPO3 4.x klicken Sie den Namen der Extension an und dann auf den Reiter "Konfiguration".

Konfigurations-Optionen

Optionen im Extension-Manager
Optionen im Extension-Manager

Folgende Optionen stehen im Extension Manager zur Verfügung:

forcedownloadtype
Liste von Dateitypen, die nicht innerhalb des Browser geöffnet werden sollen, sondern nur als Download angeboten werden. Die Dateiendungen werden durch das Pipe-Symbol | getrennt. Die Option greift nur, wenn der Parameter forcedownload gesetzt ist.
Beispiel: pdf|doc|xls|rar|tgz|tar|gz

additionalMimeTypes
Liste von zusätzlich abzusichernden MIME-Types.
Beispiel: txt|text/plain,html|text/html

forcedownload
Das aktivieren der Checkbox dieser Option sorgt für den Download der oben spezifizierten Dateitypen, statt sie inline im Browser anzuzeigen.

filetype
Liste der abzusichernden Dateitypen, durch das Pipe-Symbol | getrennt
Standard: pdf|jpe?g|gif|png|doc|xls|rar|tgz|tar|gz

securedDirs
Gibt an, welche Verzeichnisse geschützt werden sollen.
Standard: typo3temp|fileadmin|uploads
Achtung: unter TYPO3 6.x sorgt das Schützen von typo3temp dafür, dass Bilder z.B. nicht mehr in einer Lightbox vergrößert angezeigt werden können, da der File Abstraction Layer (FAL) die schon verarbeiteten Bilder im Verzeichnis typo3temp/_processed_/ ablegt. Deshalb muss hier die Standardeinstellung unter Umständen verändert werden.
Man kann hier auch Unterverzeichnisse angeben, zum Beispiel: fileadmin/user_upload/gesichert/|uploads
In diesem Fall würden nur die Ordner gesichert und uploads geschützt werden.

domain
Hier kann die Domain hinterlegt werden, für interne Links ist das nicht notwendig.

Log each file access
Das Aktivieren dieser Checkbox sorgt für ein Protokollieren der Downloads, die Daten können über das Backend-Modul Download-Traffic eingesehen werden.

Die restlichen Parameter müssen normalerweise nicht verändert werden. Details zu diesen Parametern finden Sie in der Dokumentation der Extension.

Anlegen eines Verzeichnisses für geschütze Inhalte (optional)

Zu schützendes Verzeichnis anlegen (optional)
Zu schützendes Verzeichnis anlegen (optional)

Wenn Sie nicht das komplette fileadmin/ Verzeichnis schützen wollen, können Sie auch ein oder mehrere beliebige Unterverzeichnisse schützen lassen.

Legen Sie dazu über das Dateilisten-Modul z.B. unterhalb von user_upload ein Verzeichnis gesichert an. In dieses Verzeichnis können Sie dann Dateien hochladen, die geschützt werden sollen.

Den Pfad zu diesem Verzeichnis müssen Sie dann im Extensionmanager im Feld securedDirs eintragen (s.o.).

Verzeichnis gegen direkten Download absichern

Vorlage der .htaccess kopieren
Vorlage der .htaccess kopieren

Nach diesen Schritten werden die Links zu den Dateien im Frontend schon über das Skript umgeleitet. Trotzdem könnte man die Dateien auch noch downloaden, wenn man den Pfad direkt in die Adresszeile des Browsers eingibt.

Um das zu verhindern, ist es nötig, in den zu schützenden Verzeichnissen eine .htaccess-Datei zu erstellen, die den direkten Download verhindert.

naw_securedl bringt schon ein paar Musterdateien mit. Diese befinden sich im Verzeichnis typo3conf/ext/naw_securedl/res/ 

Sie können z.B. über den Midnight Commander auf der Shell die Datei _.htaccess_deny in das zu schützende Verzeichnis kopieren und diese Datei dann in .htaccess umbenennen.

Diese .htaccess Datei sorgt dafür, dass bestimmte Dateitypen nicht direkt durch den Webserver ausgeliefert werden. Dabei wird auch auf unterschiedliche Schreibweisen bei den Dateitypen geachtet.

Die Beispiel .htaccess hat folgenden Inhalt:

<FilesMatch "\.([Pp][Dd][Ff]|[Jj][Pp][Ee]?[Gg]|[Gg][Ii][Ff]|[Pp][Nn][Gg]|[Dd][Oo][Cc]|[Xx][Ll][Ss]|[Rr][Aa][Rr]|[Tt][Gg][Zz]|[Tt][Aa][Rr]|[Gg]$
    Order deny,allow
    Deny from all
    Allow from none
</FilesMatch>
Abgesicherter Download-Link
Abgesicherter Download-Link

Wenn man jetzt in TYPO3 Inhaltselementen Links auf Dateien setzt, sehen diese im Frontend z.B. so aus wie im folgenden Screenshot:

Ebenfalls ist zu beachten, dass bei der Verwendung von Direct Mail die in den Newslettern eingebundenen Bilder nicht in einem geschützten Verzeichnis liegen dürfen.

403-Fehlerseite erzeugen

Seite für die Fehlermeldung anlegen
Seite für die Fehlermeldung anlegen

Wenn man jetzt versucht, eine Datei durch Eingabe des direkten Links in die Adresszeile des Browsers aufzurufen, wird nur ein 403-Fehler (Zugriff verboten) erzeugt und der Besucher erhält die Fehlerseite des Webservers angezeigt.

Schöner ist es allerdings, wenn man dem Besucher eine eigene Fehlerseite zeigt, auf der vielleicht erklärt wird, warum er die Datei nicht direkt downloaden kann.

Dazu können Sie eine normale Seite im TYPO3-Backend anlegen (Nicht im Menü sichtbar). Die Benennung der Seite ist natürlich beliebig.

Damit der Webserver bei einem 403-Fehler auch diese Seite ausliefert, ist eine zusätzliche Zeile in der .htaccess - Datei im Wurzelverzeichnis der Website nötig, also nicht im zu schützenden Verzeichnis, sondern dort, wo auch die index.php der TYPO3-Installation liegt.

In dieser .htaccess Datei wird die URL zur Fehlerseite hinterlegt.

Bei Verwendung von RealUrl oder CoolUri z.B.

ErrorDocument 403 http://name-der-domain.de/zugriff-verweigert/

Ohne RealUrl/CoolUri nach dem Muster

ErrorDocument 403 http://name-der-domain.de/index.php?id=xy

Wobei xy die ID der weiter oben erzeugten Fehlerseite wäre.

Das geschützte Verzeichnis vor Suchmaschinen "verstecken"

Wenn man die geschützten Verzeichnisse zusätzlich noch vor der Indizierung durch Suchmaschinen ausnehmen will, legt man im Wurzelverzeichnis der Website eine Datei mit dem Namen robots.txt an.

Diese Datei kann dann z.B. folgenden Inhalt haben:

User-agent: *
Disallow: /fileadmin/user_upload/gesichert/
Disallow: /fileadmin/geschuetztes_verzeichnis/

Dadurch erhalten die Suchmaschinen-Spider den Hinweis, die genannten Verzeichnisse und die darin enthaltenen Dateien nicht in den Suchindex aufzunehmen. Die meisten Suchmaschinen wie z.B. Google oder Bing halten sich auch an diese Vorgaben.