Wie können Sie direktes Navigieren zu einem Bild in einem Web-Verzeichnis verhindern?

StackOverflow https://stackoverflow.com/questions/608111

  •  03-07-2019
  •  | 
  •  

Frage

Ich erstelle eine Bildergalerie Site, die Sie Zugriff auf einloggen. Die Website wird Sitzungen verwenden Spur von Benutzernamen und Passwörter zu halten. Angemeldete Benutzer können nach Bildern suchen und die Ergebnisse zu sehen. Vermutlich bedeutet dies, werde ich Bilder in einem Web-Verzeichnis wird Putten. Wie kann ich halte nicht angemeldet Menschen von der Möglichkeit, direkt in diesem Verzeichnis in ein Bild zu sehen?

Dies ist PHP-basiert, mit MySQL.

War es hilfreich?

Lösung

Überprüfen Sie für einen Referrer-Header und erfordert es von Ihrer Seite zu sein. Sie können auch überprüfen, ob Cookies Sie geschickt bekommen (dass sie angemeldet sind).

Ihre beste Wette wird dann mit PHP die Bilder von einem Ort außerhalb des Web-Verzeichnis holen.

Überprüfen Sie auch den Kommentar-String aus. Mod_rewrite von Apache direkt all dies tun können,

Andere Tipps

Setzen Sie die Bilder in einem Ordner, der nicht zugänglich über eine direkte URL ist, und haben das Programm das Bild dient direkt

Legen Sie die Bilder in einem durchsuchbaren Verzeichnis nicht. Noch besser wäre es, bewahren Sie sie außerhalb des Webroot. Legen Sie eine Art von benutzerdefinierten Handler in Kraft, dass das angeforderte Bild geladen wird, und senden sie an den Benutzer zurück, nachdem der Benutzer validiert und verifiziert. Dies wird auch Hot-Verknüpfung der Bilder verhindern.

Setzen Sie die Bilder in einen Ordner außerhalb der Website, und verwenden Sie einen Proxy-Seite das Bild an den Browser zu senden. Machen Sie eine Seite, die Sie als URL verwenden in Ihrem img-Tag, so etwas wie:

getimage.php? Id = 8783475

In der Seite überprüfen Sie, dass der Benutzer angemeldet ist, und bestimmen, aus den Parametern, welches Bild zu senden. Stellen Sie den Inhaltstyp der Seite auf die Art, die das Bild übereinstimmt, zum Beispiel „image / jpeg“, lesen Sie die Bilddatei und direkt in den Antwortstream senden.

Wenn Sie Ihre Bilder nicht zu groß sind, gibt es eine sehr intelligente Art und Weise sich vor unbefugtem Zugriff zu schützen. Sie können Sie base64 econding, die gleiche wie Outlook Express Befestigungs Codierung, und setzen Sie den Code in einer ASP-Seite, die das SESSION-Objekt verwendet. SEE TUTORIALS ON ASP MEHR ZU DIESEM THEMA. Wenn ein Benutzer auf die Seite zugreift, wird der ASP-Code überprüft, ob der Benutzer autheticated. Wenn er nicht das Skript unterbricht die Seitencode, Visualisierung nicht das Bild. Wenn der Benutzer die Skripte authentifiziert wird, lädt die gesamte Seite und die Base64 wird in ein sichtbares Bild rekonstruiert. Der Trick dabei ist, dass Sie nicht ein Verzeichnis mit einfachen Bildern in ihm haben, aber das Bild wird in der HTML-Seite verschlüsselt, so wird es im laufenden Betrieb durch das Skript rekonstruiert. Da Sie Bilder im Verzeichnis nicht haben, kann niemand versuchen, den Browser direkt an sie zu zeigen, da Thay einfach nicht existieren. Sie können diese Seite verwenden, um die Bilder zu codieren:

http://www.motobit.com/util/base64-decoder- encoder.asp

Dann müssen Sie das Bild in dem HTML-Code "call" mit diesem Tag:

img src = "Daten: image / gif; base64, ................................... ........... (hier Sie den Code von der Website oben erhalten platzieren) ...............

Sie sind fertig! Ihre Bilder sind nicht verfügbar, wenn der Benutzer nicht angemeldet ist.

Lassen Sie sich nicht die Menschen Zugriff auf Ihre Bildverzeichnisse direkt.

Lassen Sie Ihre Fotogalerie-Software das Bild an den Benutzer weiterzuleiten. Überprüfen Sie die erforderlichen Anmeldeinformationen.

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