Tu as peur que quelqu’un retrouve accède à l’image de quelqu’un d’autre ?
Il n’y pas 36 solutions. Le nom des images doit être aléatoire.
Le hash SHA1 n’a pas beaucoup d’intéret, ce n’est pas tout de suite évident que image-2
suit image-3
si tu hashes mais ça peut finalement être détecté, dès que l’attaquant l’a compris, la sécurité tombe. C’est une sécurité par l’obscurité et donc une non-sécurité.
La plus simple est de tirer un nom totalement aléatoire. Prend par exemple au moins 4 lettres aléatoires, ça te forme déjà un paquet de noms possibles. Tu as alors peu de risque de tomber 2 fois sur le même nom. Si jamais ça arrive, alors « ajoute/change une lettre aléatoirement » jusqu’à ce que tu tombes sur un nom disponible. Ce n’est pas déterministe mais la probabilité que ça pose problème est de l’ordre de 1 sur plusieurs milliard de milliard alors bon…
L’alphabet à utiliser est le basique alpha-digital: a-zA-Z0–9.
Biensûr, utiliser un petit nom de caractères, pose le problème que l’utilisateur peut bruteforcé l’accès aux images. En testant toutes les noms possibles. La solution simple pour palier à ça est de prendre plus de caractères que 4. Commence à 7 ou 8 par exemple et la méthode demande déjà trop de ressources de la part de l’attaquant (et aussi pour ton serveur d’ailleurs). La méthode complexe mais intéressante est de limité le nombre d’image auquelle un utilisateur peut accéder en 1minute. Par exemple, l’utilisateur n’a pas le droit de charger plus de 20 images par minutes.
Avec une telle restition, il devient impossible de brute-forcer l’accès aux images même si leur nom ne fait que 4 caractères. Déjà, 20 requètes pas secondes, il faut que ton serveurs tienne la charge (ça ne devrait pas poser problème pour des requètes aussi simples).
Remarque dans tous les cas, il est toujours intéressant de limiter le nombre de requètes provenant d’une même source.