TYPO3: Dateien vor nicht eingeloggten Nutzern schützen

Besuchern einer Website einen geschützten Login-Bereich bereitzustellen, ist mit TYPO3 CMS sehr schön und recht einfach lösbar. Was aber in der Natur der Sache liegt ist dabei, dass Datei-Downloads dadurch nicht geschützt werden, da sie ohne PHP-seitige Prüfung der Zugriffsrechte direkt vom Webserver geholt werden. Ein Link, der direkt die Datei aufruft, kann von TYPO3 CMS leider nicht abgefangen werden.

Um das Problem zu lösen, gibt es mehrere Ansätze. Der korrekte Weg ist, die Dateien nicht direkt zu verlinken, sondern stattdessen über PHP-Code, der vorher die Zugriffsrechte prüft, zu „dispatchen“. Eine Extension, die sich genau das auf die Fahne geschrieben hat, ist fal_securedownload. Sie klinkt sich in die FAL-Storages ein und führt vor der Auslieferung die Zugriffsrechteprüfung durch.

Nicht immer jedoch ist es möglich, diese Extension einzusetzen, zum Beispiel, weil die schiere schon bestehende Datenmenge eine Migration schwierig macht. Oder es ist den Aufwand nicht wert, weil die Daten nur rudimentär geschützt werden müssen, aber nicht wirklich kritisch sind.

Eine Notlösung, die leider recht einfach hackbar ist, aber zumindest vor unerlaubtem Zugriff nicht technik-affiner Menschen schützt und bei vielleicht nicht ganz so kritischen Dateien anwendbar ist: Ihr könnt einem Apache2-Webserver auch über die .htaccess-Datei sagen, dass bei Fehlen bspw. eines bestimmten Cookies die angeforderte Ressource nicht ausgeliefert, sondern der Benutzer umgelenkt wird. In folgendem Beispiel nutze ich das, um nur eingeloggten Frontend-Benutzern Dateien auch auszuliefern:

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*fe_typo_user.*$ [NC]
RewriteRule ^ http://www.domain.de [R,L]

Um es noch ein wenig sicherer zu machen, könntet Ihr den Cookie umbenennen. Im Install-Tool im Bereich FE bzw. Frostend findet Ihr zu dem Zweck eine Option, die die Variable für den Cookie-Namen ändert. Das könnte dann zum Beispiel so aussehen:

// /typo3conf/LocalConfiguration.php
$GLOBALS['TYPO3_CONF_VARS']['FE']['cookieName'] = 'diesenCookieNamenKennstDuNicht';

In der .htaccess-Datei ist der Name dann natürlich entsprechend zu ersetzen.

Aber Achtung: Dies sollte keine Lösung sein, auf der man sich bei kritischen Daten ausruht!

Ich bin gespannt, ob jemand Vorschläge hat, wie man dies sicherer lösen kann, ohne den „großen“ Weg über eine Extension zu gehen. Hat da jemand Ideen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *