Question

Je crée un site de galerie d'images auquel vous devez vous connecter pour pouvoir y accéder. Le site utilisera des sessions pour garder trace des noms d'utilisateur et des mots de passe. Les utilisateurs connectés pourront rechercher des images et voir les résultats. Cela signifie vraisemblablement que je vais mettre des images dans un répertoire Web. Comment empêcher les personnes non connectées de pouvoir accéder directement à une image de ce répertoire?

Ceci est basé sur PHP, avec MySQL.

Était-ce utile?

La solution

Recherchez un en-tête de référent et demandez-lui de provenir de votre site. Vous pouvez également vérifier que les cookies vous sont envoyés (qu’ils sont connectés).

Votre meilleur choix est alors de demander à PHP de récupérer les images d’un emplacement situé en dehors de votre répertoire Web.

Découvrez également la chaîne de commentaire: en utilisant mod_rewrite, vous pouvez faire tout cela directement depuis Apache.

Autres conseils

Placez les images dans un dossier qui n'est pas accessible via une URL directe et demandez au programme de servir l'image directement

Ne mettez pas les images dans un répertoire parcourable. Mieux encore, stockez-les en dehors de votre racine Web. Mettez en place une sorte de gestionnaire personnalisé chargé de charger l’image demandée et de la renvoyer à l’utilisateur, une fois celui-ci validé et vérifié. Cela empêchera également les liens directs de vos images.

Placez les images dans un dossier situé en dehors du site Web et utilisez une page proxy pour envoyer l'image au navigateur. Créez une page que vous utilisez comme URL dans votre balise img, par exemple:

getimage.php? id = 8783475

Dans la page, vérifiez que l'utilisateur est connecté et déterminez quelle image envoyer. Définissez le type de contenu de la page sur le type correspondant à l'image, par exemple "image / jpeg", lisez le fichier image et envoyez-le directement au flux de réponses.

Si vos images ne sont pas trop grandes, il existe un moyen très intelligent de les protéger contre les accès non autorisés. Vous pouvez utiliser un code base64 identique à l'encodage de la pièce jointe Outlook Express et insérer le code dans une page ASP utilisant l'objet SESSION. CONSULTEZ LES TUTORIELS SUR ASP POUR PLUS D'INFORMATIONS SUR CE SUJET. Lorsqu'un utilisateur accède à la page, le code asp vérifie si l'utilisateur est authentifié. Si ce n'est pas le cas, le script interrompt le code de la page et ne visualise pas l'image. Si l'utilisateur est authentifié, les scripts chargent la page entière et la base64 est reconstruite en une image visible. Le truc ici est que vous n’avez pas de répertoire avec des images simples, mais que l’image est encodée dans la page html, elle est donc reconstruite à la volée par le script. Puisque vous n’avez pas d’images dans le répertoire, personne ne peut essayer de les diriger directement vers le navigateur, car elles n’existent tout simplement pas. Vous pouvez utiliser ce site pour encoder les images:

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

Ensuite, vous devez "appeler". l'image dans le code html en utilisant cette balise:

img src = " données: image / gif; base64, .................................. ............ (vous placez ici le code obtenu sur le site ci-dessus) ...............

Vous avez terminé! Vos images ne sont pas accessibles si l'utilisateur n'est pas connecté.

Ne laissez pas les gens accéder directement à vos répertoires d'images.

Laissez votre logiciel de galerie d'images transférer l'image à l'utilisateur. Vérifiez les informations d'identification requises.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top