Proteger dosseir photo

Eléphant du PHP | 57 Messages

21 sept. 2021, 07:17

Bonjour à tous,

Sur mon projet j'ai un dossier photo, actuellement si je tape le url le nom du dossier et la photo celle-ci apparait.
Est il possible de bloquer l’accès au dossier que seul le site qui fait appel aux photos puisse y accéder ?
J'ai regarder du coté htaccess mais je comprend pas ...

Merci par avance de votre aide.

@+ Filou

ynx
Eléphant du PHP | 323 Messages

25 sept. 2021, 09:44

Bonjour,

L'utilisation d'un fichier .htaccess est une solution possible si ton site est hébergé avec le serveur web Apache :
https://httpd.apache.org/docs/2.4/fr/howto/access.html
Pour refuser l'accès par url au dossier "photo" et ces fichiers, tu peux créer un fichier .htaccess dans ce dossier et y ajouter une directive Require :
Require all denied

Pour accéder aux photos depuis la partie cliente du site (html), on va généralement créer un script PHP qui lui sera accessible par URL et qui prendra en paramètre l'image à afficher (en utilisant notamment les fonctions header() pour envoyer les bonnes entêtes http et readfile() pour retourner le fichier, voir l'exemple sur la doc php de readfile).
Le fait de passer par un script PHP pour afficher/retourner l'image permet d'ajouter des conditions : par exemple afficher l'image uniquement si l'utilisateur est connecté au site.

Par contre, je ne sais pas quelle est la bonne solution à recommander pour que seul le site qui fait appel aux photos puisse y accéder (surement pas le HTTP_REFERER qui peut être modifié par l'utilisateur et qui n'est donc pas une valeur de confiance).
Peut-être via un système de token CSRF ? Les éléphants du PHP auront surement des pistes plus précises à ce sujet.

Bonne journée,