Stupid bug vraiment.
J'ai environ 45.000 domaines hébergés à rentyourdot.com, avec environ 100 modèles. Les noms de fichiers étaient accessibles en utilisant quelque chose comme / images / template / filename.filetype.
Par exemple, / images / redtemplate / header.jpg
Je ne voulais pas que Google se rendre compte que les 45.000 sites de je que beaucoup d'entre eux avaient le même gabarit. Donc l'une des nombreuses choses que j'ai faite a été retirer le nom du modèle dans tous les modèles, de sorte que les images et les fichiers CSS semblait maintenant être générique plutôt que tous en provenance d'un dossier. Je me suis fait attraper des modèles, basés sur un identifiant de session et ensuite consulté les fichiers par
/ images / header.jpg
Ensuite, j'ai utilisé de réécriture d'URL pour modifier l'emplacement de l'image / images / header.jpg to / images / redtemplate / header.jpg
Cela signifie, que deux modèles différents, pourrait à la fois l'accès / images / en-tête. jpg, mais ils obtenir des images différentes. Cela a été correct.
Par exemple,
/ images / header.jpg -> / images / rouge template / header.jpg si la personne a utilisé le modèle rouge
/ images / header.jpg -> / images / bleu template / header.jpg si la personne a utilisé le modèle bleu
Ce fut travaille la plupart du temps. Cependant il y avait la possibilité qu'il y avait effectivement des collisions dans le système de cache MD5, parce que j'ai été en utilisant le nom court pour déterminer le nom du fichier cache, et non la version longue
à savoir:
si la personne a utilisé le modèle rouge
/ images / header.jpg -> / images / rouge template / header.jpg -> md5 (/ images / header.jpg) -> e4d909c290d0fb1ca068ffaddf22cbd0.jpg
si la personne a utilisé le modèle bleu
/ images / en-tête. - jpg> / images / bleu template / header.jpg -> md5 (/ images / header.jpg) -> e4d909c290d0fb1ca068ffaddf22cbd0.jpg
MEME MD5! Cela signifie que si le fichier a été mis en cache, le modèle rouge, montrait des images bleues. Lorsque le cache expire, il serait bon travail, et le bleu templates montrer des images rouge.
Comme la plupart du temps, le MD5 n'aurait pas les collisions dans le nom de cache, il travaillerait pour la plupart des fichiers, à savoir:
/ images / en-tête. jpg (redtemplate)
/ images/header2.jpg (bluetemplate)
Maintenant, il n'y aurait pas une collision dans le codage MD5.
Est-ce que tout cela un sens? Ce que je veux en venir est, j'aurais été en utilisant le nom MD5 du nom de l'image cible, pas le nom de l'image source.
/ images / redtemplate / header.jpg -> e4d909c290d0fb1ca068ffaddf22cbd0.jpg
/ images / bluetemplate / header.jpg -> d41d8cd98f00b204e9800998ecf8427e. jpg
Voici ce que le bug est descendu à:
cname = md5 ($ sName) $;
VS:
cname = md5 ($ dname) $;
Une différence lettre (VS source destination) signifiait le mauvais nom a été utilisé et tout a fonctionné à 99% du temps, au lieu de 100% du temps.
Je dispensés du trouverez ce pour la vie de moi!
Voici un exemple de celui-ci fonctionne correctement (nom du modèle est yeso):
http://www.photofight.com/images/yeso/smile.gif
Remapped (nom du modèle est encore yeso, mais vous ne voyez pas le remappage):
http://www.photofight.com/images/smile.gif
Upload video and picture galleries at http://www.bodydot.com?post+upload+video+picture+gallery