Est-il possible de mettre les données d'image binaire dans le balisage html et ensuite obtenir l'image affichée comme d'habitude dans n'importe quel navigateur?
C'est un problème de sécurité important et je suis sûr que cela doit être possible.
Un exemple simple:
Vous exécutez un portail communautaire. Les utilisateurs sont enregistrés et télécharger leurs photos.
Votre application vous donne les règles de sécurité à chaque fois qu'une image est autorisé à être affiché. Par exemple, les utilisateurs doivent être des amis sur chaque côtés par le système, afin que vous pouvez voir quelqu'un d'autre photos téléchargées.
Voici le problème: il est possible que quelqu'un qui analyse l'image des répertoires de votre serveur. Mais vous voulez protéger vos utilisateurs contre de telles attaques.
Si il est possible de mettre les données binaires d'une image directement dans les balises HTML, vous pouvez restreindre l'accès de l'utilisateur, de votre image dirs à l'utilisateur et de groupe de votre application web s'exécute et transférer les données d'image de votre Apache d'utilisateur et de groupe directement dans le HTML.
La seule faiblesse est alors le mot de passe de l'utilisateur de votre application web s'exécute.
Il y a déjà une possibilité?
- il y a un moyen comme la mise en cache des images shortwise dans le public dir du serveur, mais que ferait-il cher.
Vous devez vous connecter pour publier un commentaire.
Il y a d'autres (mieux) manières, décrites dans d'autres réponses, pour sécuriser vos fichiers, mais oui, il est possible d'insérer l'image dans votre code html.
Utiliser le
<img>
balise de cette façon:Où la
xxxxx...
partie est un encodage base64 de gif les données de l'image.Si j'avais besoin de sécurité sur mon répertoire d'images je ne voudrais pas exposer le répertoire à tous. Au lieu de cela ma img src attributs de référence une page qui permettrait de prendre un nom d'utilisateur et un identifiant de l'image en tant que paramètre.
La page de valider que l'utilisateur a en effet d'avoir accès à de voir cette image. Si tout est bon, envoyer le binaire en arrière. Sinon, envoyez rien.
par exemple:
Aussi, je ne voudrais pas utiliser deviner id. Au lieu de coller à quelque chose comme base 64 codé guid.
Je ne suis pas sûr de comprendre, mais voilà. Au lieu de servir des images statiques qui résident dans un dossier d'images - pourquoi ne pourriez-vous pas, à l'aide de votre côté serveur de la technologie de choix, les images de façon dynamique envoyés au client? De cette façon, votre code côté serveur peut obtenir dans le mélange et autoriser ou refuser l'accès par programmation?
Vous pouvez déplacer les images de la racine du document dans un répertoire privé et de les livrer par le biais de votre application, qui a accès à ce répertoire. Chaque fois que votre application génère une balise d'image, il génère également une courte émission de jeton de sécurité qui doit être spécifié lors de l'accès à une image particulière:
Les Chances sont très rare que quelqu'un aura la force brute, le bon jeton au bon moment avec l'image de droite.
Il y a au moins de possibilités de vérifier le jeton dans "getImage":
PHP exemple:
Avec HTML5, vous pouvez utiliser la balise canvas et JavaScript pour faire cela.
Vous pourriez peut-être faire quelque chose avec soit en CSS ou une présentation en tableau pour dessiner une image (sans doute vraiment de la mauvaise performance, de résolution, de portabilité).
De toute façon, on n'arrête pas les gens de prendre des photos. Ils pourraient prendre une capture d'écran et de la culture de la sortir.
Comme Chris l'a mentionné dans sa réponse, après avoir longtemps id d'image de sorte que l'URL de chaque image n'est pas facile à deviner ou à la force brute est important. Et aucune liste de répertoire sur votre serveur web à des répertoires est également.