• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bestimmten Zugriff via htaccess erkennen und blocken

Tobi44

Mitglied
Hallo,

ich verwende für eine Website geschützte Bereiche, lege die User dafür im Plesk (passwortgeschützte Verzeichnisse) an.

Biete dort Downloads an, auf die nicht jeder zugreifen soll, deswegen der PW-Schutz. Ich logge alle Zugriffe und speichere sie in der Datenbank mit allen Infos, Verbindungsdaten, den Usernamen bzw. "remote_user".

So sehe ich, wann welcher User auf die Website zugreift. Allerdings sehe ich nicht, wenn User1 bspw. seine Zugangsdaten an einen anderen weitergibt, der aber gar nicht auf eine php-Datei im geschützten Bereich zugreift, welche den neuen Zugriff mit der neuen IP loggt, sondern direkt die .mp4 Datei aufruft.

Der Server loggt ja für die access_logs auch den remote_user, ist es daher nicht vielleicht möglich, alle Zugriffe die auf eine Datei in Verzeichnis "xxx" erfolgen zu sperren, sofern kein Zugriff zuvor auf irgendeine php-Datei erfolgt ist? Oder den Zugriff auf Datei in Verzeichnis "xxx" sperren, wenn er ohne einen Referer von meiner "domain.com" erfolgt? Oder weiß jemand für mein Vorhaben eine komplett andere Lösung?

Danke & Gruß
 
Werbung:
Hallo,
Allerdings sehe ich nicht, wenn User1 bspw. seine Zugangsdaten an einen anderen weitergibt, der aber gar nicht auf eine php-Datei im geschützten Bereich zugreift, welche den neuen Zugriff mit der neuen IP loggt, sondern direkt die .mp4 Datei aufruft.
Danke & Gruß

Den Satz vertsehe ich nicht.Was meinst du genau ? Ein User gibt seine Daten(username und password) an einen anderen weiter und der lädt eine Datei herunter, die nicht im geschützten Bereich liegt.Dieser Anwendungsfall soll nicht gelogt werden oder wie ?
 
Verständnisproblem - der Satz an sich ist eigentlich richtig, aber ich verdeutliche das nochmal:

Ich habe ein geschütztes Verzeichnis auf domain.com - nennen wir es home. In diesem Verzeichnis beinhaltet jede php-Datei, die ein normaler User bei bzw. nach seinem Login aufruft (ein "normaler User" kann ja nur meinen Links folgen, und der ist halt das /home/index.php - wo der User dann landet) ein Script, welches den Zugriff einmalig pro IP und in 24h loggt. Wenn der User bspw. nach 5 min mit einer anderen IP das geschützte VZ home aufruft, wird dieser neue Zugriff mit seinem Namen, seiner neuen IP usw. gespeichert. Dann würde ich ja sehen, dass es evtl. ein neuer User mit seinem Zugang ist und nicht er selbst.

Der "normale User" sieht im geschützten Bereich die Downloadlinks zu bspw. .mp4-Dateien, und könnte sie im Web verlinken unter Nennung seiner Zugangsdaten. In diesem Fall erfolgt der Zugriff und der Login der "anderen User" direkt auf die .mp4 Datei und der Zugriff wird mir allenfalls im access log angezeigt, nicht aber durch mein Script geloggt, da das Script logischerweise nur in den php-Dateien verbaut ist.

Daher möchte ich irgendeine Lösung mittels htaccess, sodass im VZ home und dessen Unterverzeichnissen, am liebsten aber auf der ganzen Domain, keine Dateien (z.B. mp4, flv etc.) aufgerufen werden können, wenn der User "kein normaler User" ist. D.h. man müsste zuerstmal wissen, wie man einen "unnormalen User" ausfindig macht, bspw. wenn der Zugriff auf die downloadbare MP4-Datei von einem anderen Referer als domain.com erfolgt. Aber ob das wirklich in jedem Fall hilft? Damit meine ich z.B. wenn ein User durch domain.com/home/index.php dem Link zu domain.com/home/video/1.mp4 folgt, soll er die Datei bekommen, wenn ein User aber durch eine fremde-domain.ru/home/video/1.mp4 + Eingabe der fremden Zugangsdaten = Fehlermeldung bekommen (die Fehlermeldung soll wenn möglich eine php-Datei auf meiner Domain sein, auf die in der htaccess weitergeleitet wird).

Ist das so möglich?
 
Werbung:
Leg die Dateien die nach dem Login zur Verfügung gestellt werden nicht in einem übers Web erreichbaren Ordner ab. Wenn deine Dateien in deinem Webhosting unter /www liegen, leg einen Ordner parallel dazu an, z.B. /files. Um die Dateien dann zum Download anzubieten, erstelle eine download.php an die Du per Parameter übergibst, welche Datei an den Nutzer zum Download zurückgegeben werden soll. Der Link sähe z.B. so aus:
Code:
/download.php?file=datei.zip

In dieser download.php prüfst Du dann ..
.. ob diese Datei lokal in /files existiert
.. der zugreifende Nutzer innerhalb deines Loginsystems die nötigen Rechte dafür hat.

Wenn eines von beiden nicht zutrifft, könntest Du z.B. auf die Startseite weiterleiten oder eine Fehlerseite anzeigen.

Dadurch würde ein Nutzer z.B. nur noch den Pfad zur download.php + Parameter an jemand anderen weitergeben können. Dieser andere würde jedoch einfach nur auf die Startseite (oder was auch immer Du im Fehlerfall definierst) weitergeleitet werden und nicht an die Datei heran kommen.
 
Oha, danke für die ausführliche Erklärung, allerdings geht mir das für diesen Zweck doch zu weit. Dachte das könnte man einfacher lösen, per htaccess? Dies ist nicht der Fall?

Gruß
 
Werbung:
Per htaccess könntest Du nur wie Du oben schon gesagt hast den Referer auslesen. Dieser kann jedoch manipuliert werden und ist daher nicht sicher.
 
Hmm, und wie mache ich das für die flv und mp4-Dateien?

Habe aktuell folgendes für Bilder drin:
Code:
<FilesMatch "\.(gif|jpe?g|png|bmp)$"> 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?meinedomain.com/.*$ [NC] 
RewriteCond %{REQUEST_FILENAME} !forbidden.png$ 
RewriteRule .*\.(gif|jpe?g|png|bmp)$ http://www.domain.com/forbidden.png [R] 
</FilesMatch>
Das bewirkt ja aber lediglich, dass Bilder (oder wenn man es um mp4/flv erweitert) nur dann angezeigt werden, wenn sie auf meinedomain.com verlinkt sind. Das sind die Videos aber immer. Wie mach ich es denn, dass der Referer immer meinedomain.com sein muss? Wenn also der Zugriff auf die Datei meinedomain.com/home/meinvideo.mp4 z.B. von domain.ru erfolgt soll geblockt werden, wenn der Zugriff auf die /home/meinvideo.mp4 jedoch von meinedomain.com kommt soll die Datei kommen...

Danke & Gruß
 
Werbung:
Hab ich, ja klappt halbwegs. Wenn ich die Datei aber aufrufe, wenn sie NICHT auf einer anderen Seite verlinkt ist, also DIREKT meinedomain.com/home/meinvideo.mp4 aufrufe, wird die Datei dennoch angezeigt. Ich möchte, dass sie nur dann angezeigt werden kann, wenn sie auf meinedomain.com (bspw. in einem Player) eingebunden ist oder von dort verlinkt wird, nicht jedoch wenn sie a) von einer anderen Seite verlinkt wird (klappt nun) oder b) wenn sie direkt aufgerufen wird. Wie realisiere ich b) mit htaccess?

Danke & Gruß
 
Zurück
Oben