Frage

Ich brauche die beste Art und Weise den Zugriff auf dem doc-Dateien zu verhindern, wenn es nicht meine Web-Anwendung ist zum Beispiel, ich brauche einige Dateien von Suchmaschinen oder öffentlichen Benutzern versteckt wurde und nur private Nutzer erreichen können und sie herunterladen.

Ich mag die Dateien im Dateisystem speichern und nicht in der DB, um nicht die DB-Nutzung zu erhöhen.

War es hilfreich?

Lösung

Sie können Ihre Dateien im Dateisystem speichern, in einem Verzeichnis, das nicht durch eine URL (wie Geschwister Ihrer Stammwebverzeichnis) zugegriffen werden kann. Dies wird einen direkten Zugang zu verhindern.

Dann schreibt einen PHP-Skript, das, wenn für eine bestimmte Datei abgefragt, prüft, ob der Benutzer diese Datei zugreifen kann, und senden Sie es mit readfile (zusammen mit header für den Inhaltstyp und Inhalt Disposition).

Andere Tipps

Wenn Sie sagen, „privaten Anwender“ nur ich gehe davon aus, dass die Mittel diese Benutzer irgendwie authentifiziert werden. Sie können diese Dateien außerhalb des Web-Verzeichnis speichern und sie dann über PHP / Perl / Your_Favorite_Programming_language dienen werden.

Ein Link zu einem Skript führen könnte, dass überprüft, ob der Benutzer authentifiziert ist, wenn ja, dient dazu, die Datei über das Skript auf.

In PHP, nach der Authentifizierung des Benutzers, könnten Sie verwenden:

header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');

Denken Sie daran, dieses Verzeichnis außerhalb Ihres Webroot zu machen, und die Berechtigungen für den gleichen Benutzer festlegen, dass Ihre Skripte laufen als (nobody, in der Regel unter Apache).

Robots.txt ist ein Weg, um Block / erlauben bestimmte HTTP-Benutzer Agenten. Es ist nicht der sicherste Weg, though. Sie könnten die Standardauthentifizierung verwenden, um Ihren Web-App Login zu lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top