2009-12-04 6 views

Répondre

6

vérifier simplement dans votre script si la page demandée existe, comme

// allowed get parameters for product 
$whiteList = array(
    'tvs', 
    'toys', 
); 

$menu = $_GET['products']; 

if (! in_array($menu, $whiteList) { 
    // forward to inde 
} else { 
    // forward to requested page 
} 
+0

La liste blanche ne devrait même pas être nécessaire, un simple 'file_exists()' ou 'is_file()' devrait faire l'affaire, bien que cela puisse dépendre des paramètres de votre serveur. – Duroth

+0

@Duroth ce n'est pas vrai, l'URI peut être analysé pour appeler une fonction ou toute autre chose en plus d'inclure purement un fichier par son nom complet. – chelmertz

0

Utilisez-vous la navigation comme ça?

http://www.mywebsite.com?products=book.php

Si vous n'êtes pas redirigez quelqu'un, je veux dire que si vous n'utilisez quelque chose comme

http://www.mywebsite.com?products=http://www.myanotherdomain.com

Ensuite, il suffit de vérifier la chaîne si elle commence par « http »

Peut aider: http://nl2.php.net/manual/en/function.substr.php

Ex:

$str = $_GET['products']; 
if (strlen($str) > 4 && if (substr($str, 0, 4) == "http") 
{ 
    echo "You dirty Einstein!! Get out!"; 
    return; 
} 
+0

Vous devrez également vérifier si elle commence avec ftp, rss, ssl ou tout autre protocole, donc ce n'est pas vraiment une solution –

+0

@adam: J'ai fourni un exemple. Un seul exemple ... – JCasso

+1

C'est la mauvaise solution, le seul moyen sûr est de vérifier par rapport à une liste blanche, de ne pas exclure en fonction des règles. –