2011-03-08 3 views
0

bonjour im essayant d'implanter quelque chose comme static.domain.com où nous pouvons mettre notre image sans cookie. mais le problème est que im servant mon image via php. comme celui-ciComment implémenter un domaine ou une requête sans cookie?

public function getIMG($img) 
{ 
    if (! file_exists("www-static". DS ."assets". DS ."images". DS . $img)) { 
     throw new Exception("No such img as $img"); 
    } 

    $img = "/image-static". DS ."assets". DS ."images". DS . $img; 
    echo '<img src="' . $img . '" />'; 
} 

pouvons nous les implanter encore? peut-être en utilisant php cookie_set et en quelque sorte effacer tout le cookie? mais j'ai peur de sa part avec les sessions si je suis correct.

Voici la demande de firebug.

enter image description here

+2

Sacré merde, quelle fonction de hachage utilisez-vous pour générer cet ID de session? C'est obscénement long et inutile. – Charles

+0

512 hachage. (Je sais que c'est exagéré) mais mon équipe y a pensé (la sécurité au-dessus de la performance.) C'est pourquoi nous essayons de prendre la performance ailleurs comme au service d'un contenu statique assez bon. etc. –

+0

Comment protégez-vous contre l'injection de caractères malveillants dans le paramètre '$ img'? Si un attaquant fournit un '$ img' comme' "../../../../../ config/database.conf" 'ou' "../../../../. ./var/lib/mysql/databasename.db "' ce code donnera heureusement à l'attaquant votre nom d'utilisateur/mot de passe de base de données ou votre base de données ou d'autres données qui devraient rester privées. – sarnold

Répondre

1

C'est le cookie de session php qui est créé automatiquement lors de l'utilisation des sessions.

Voir this question pour savoir comment le désactiver.

+0

pouvons-nous simplement l'éteindre lorsque nous faisons une telle demande, et le rallumer, je ne suis pas sûr de ce qui se passera si nous le désactivons. edit * comme je l'ai dit le problème est de servir mon image à partir d'un cadre, donc c'est comme on n'est pas? –

+0

@adam Quelle est la raison pour laquelle vous voulez l'enlever? Si vous avez besoin de sessions il n'y a aucun moyen de contourner cela (à moins que vous ne l'ajoutiez à l'URL au lieu du cookie, je suppose que cela ne vous aidera pas) –

+0

bien juste après le static.domain.com dit par yahoo. et il semble qu'ils ont raison, pour quoi utilisons-nous cookie pour servir l'image? http://developer.yahoo.com/performance/rules.html –

0

Vous pouvez toujours faire quelque chose comme ce que vous avez dans votre description. L'astuce est qu'au lieu de vérifier si une image se trouve dans le système de fichiers local, vous devez vérifier si une image est disponible sur un serveur distant.

Vous pouvez utiliser quelque chose comme:

$image_headers = get_headers('http://static.domain.com/image.png'); 
if (false !== strpos($image_headers[0], '200')) 
    // echo image tag if the response's status code is 200 

Bien sûr, constamment CLIQUETIS un serveur distant est un processus coûteux. Donc, vous pouvez vouloir garder une liste locale des images qui sont disponibles sur static.domain.com

Questions connexes