2010-07-16 3 views
2

Je pense que je fais ce mal, mais c'est ce que j'ai ...

if($_GET['color']) { 
    $color = "signature_"; 
echo "<img src=\"/images/+ $color \"; \"class=\"border\" alt=\"\" />"; 

Ce que je suis en train de faire est sortie la couleur image basée sur l'entrée des utilisateurs.

Alors dis que c'est ce que je fais.

Http://somedomain.com/index.php?username=Ultima&color=red. 

Jusqu'à présent, je suis bien, les noms d'utilisateur déplacement mais les images ne fonctionnent pas.

J'ai utilisé "signature_" comme préfixe parce que les couleurs de l'image sont préfixées avec cela.

Les images que je suis en train d'afficher sur l'entrée:

signature_red.png 
signature_green.png 
signature_white.png 
signature_yellow.png 
signature_gold.png 
signature_silver.png 
signature_purple.png 
signature_pink.png 

__

Je ne sais pas ce que je fais mal avec mon code ... mais personne ne sait comment je pourrait afficher les images appropriées lors de l'entrée d'URL en utilisant $get['color']?

+4

Veuillez noter que votre code actuel est sujet aux attaques XSS. N'oubliez pas de valider le paramètre par ex. via des expressions régulières ou une liste blanche de couleurs possibles. –

+0

Un in_array fonctionnerait-il comme une liste blanche? Merci de me le faire savoir en passant. – Ultima

Répondre

4
$g=$_GET['color']; 
if(in_array($g, array('red', 'pink', 'yellow' etc...))) { 
    $color = "signature_".$g.'.png'; 
    echo '<img src="/images/'. $color.'" class="border" alt="" />'; 
} 

Ou quelque chose comme ça. Vous devez remplacer la partie "etc ...".
Ne jamais mettre les paramètres GET dans une chaîne sans vérification.

+0

Merci de m'avoir donné le contrôle de sécurité supplémentaire. =) – Ultima

1

à moins que je suis stupide (ce qui est tout à fait possible), ce bitneeds change:

if($_GET['color']) { 
    $color = "signature_"; 

devrait être

if($_GET['color']) { 
    $color = "signature_" . $_GET['color']; 

et il a besoin de valider la couleur aussi bien, quelqu'un d'autre couvert ça.

0
$color = "signature_" . $_GET['color'] . ".png"; 
echo "<img src=\"/images/$color\" class=\"border\" alt=\"\" />"; 
Questions connexes