Hi! Ich hoffe das ist das richtige Forum für diese Diskussion.
Meine Anwendung soll einen geschützten Member-Bereich haben. Die Benutzer verwalte ich mit einer MySQL-Datenbank. Die Sessions speichere ich in der Datenbank (keine Session-Cookies => kein Session-Hijack möglich). Es stellt sich die Frage, wie ich den Content (Bilder, Videos) im Member-Bereich schützen kann.
Die folgenden Konzepte habe ich mir überlegt.
Leider sagen sie mir alle nicht 100% zu. Am ehesten entspricht htaccess mit Auth MySQL dem, was ich machen möchte. Leider kann ich jedoch das Apache Modul nicht voraussetzen. Den Benutzer bei jedem Aufruf eines Bildes mit einer Datenbankabfrage zu authentifizieren halte ich jedoch für nicht sinnvoll. Auch das Laden durch PHP könnte zu viel Server-Last produzieren.
Ich kenne definitiv Seiten, die nicht einfach eine htaccess-Datei benutzen um den Member-Bereich zu schützen. Genauso wie bei mir kann man sich auf diesen Seiten mit einem html-Formular für Username und Passwort anmelden. Nach Anmeldung wird der Member-Bereich freigeschaltet. Genauso soll es auf meiner Seite auch sein. Leider kann ich den Quellcode nicht einsehen und weiss nicht, wie die das realisiert haben.
Hat jemand eine Idee?
Meine Anwendung soll einen geschützten Member-Bereich haben. Die Benutzer verwalte ich mit einer MySQL-Datenbank. Die Sessions speichere ich in der Datenbank (keine Session-Cookies => kein Session-Hijack möglich). Es stellt sich die Frage, wie ich den Content (Bilder, Videos) im Member-Bereich schützen kann.
Die folgenden Konzepte habe ich mir überlegt.
- Schutz des Member-Bereichs mit htaccess und einer htpasswd-Datei
Vorteil: Recht einfach. Funktioniert zuverlässig. Es gibt vorgefertigte Tools, die die Benutzer der htpasswd-Datei hinzufügen.
Nachteil: Keine Benutzer-Datenbank benötigt. Keine Information über Benutzer speicherbar. (Oder es wird eine Synchronisation der Datenbank mit der htpasswd-Datei benötigt.) Scheidet deshalb aus. - htaccess mit Auth MySQL
Vorteil: Integration der Nutzerdatenbank.
Nachteile: Setzt mod_auth_mysql Apache Modul voraus. Ausserdem muss sich der Benutzer wohl zweimal anmelden (einmal auf der Seite und einmal, wenn er auf den geschützten Content zugreifen will). - Laden des geschützten Contents mit PHP
Vorteil: Einfach zu realisieren (richtige Header setzen + readfile()).
Nachteil: Bei jedem Zugriff muss der Benutzer authentifiziert werden. Es fällt also bei jedem Zugriff auf ein einzelnes Bild eine Datenbankabfrage an (die Sessions speichere ich ja wie gesagt in der Datenbank).
Ausserdem wird bei jedem Aufruf eines Bildes der PHP-Interpreter gestartet. Generell mag ich Ausgabe von Dateien mit PHP nicht so sehr. Funktionieren da progressive Jpegs? Erscheint mir nicht so. - Den Member-Bereich nicht schützen, aber den Content verschleiern
Mit einem Cron-Job oder PHP könnte ich periodisch entweder die einzelnen Bilder oder nur deren Verzeichnisse umbenennen.
Vorteile: Schutz vor Hotlinking. Wenn Nutzer meinen, sie könnten die Bilder verlinken, könnte man dadurch ein wenig zusätzlichen Traffic bekommen.
Nachteile: Kein echter geschützter Bereich. Cron-job muss installiert werden oder das ganze mit PHP realisiert werden. - Die Sessions doch nicht in der Datenbank speichern und damit die User authentifizieren?
- Kombination aus den obigen Möglichkeiten?
Leider sagen sie mir alle nicht 100% zu. Am ehesten entspricht htaccess mit Auth MySQL dem, was ich machen möchte. Leider kann ich jedoch das Apache Modul nicht voraussetzen. Den Benutzer bei jedem Aufruf eines Bildes mit einer Datenbankabfrage zu authentifizieren halte ich jedoch für nicht sinnvoll. Auch das Laden durch PHP könnte zu viel Server-Last produzieren.
Ich kenne definitiv Seiten, die nicht einfach eine htaccess-Datei benutzen um den Member-Bereich zu schützen. Genauso wie bei mir kann man sich auf diesen Seiten mit einem html-Formular für Username und Passwort anmelden. Nach Anmeldung wird der Member-Bereich freigeschaltet. Genauso soll es auf meiner Seite auch sein. Leider kann ich den Quellcode nicht einsehen und weiss nicht, wie die das realisiert haben.
Hat jemand eine Idee?
Kommentar