J'ai un site web en php qui inclut() pour intégrer le contenu dans un template. La page à charger est donnée dans un paramètre get, j'ajoute ".php" à la fin du paramètre et inclue cette page. Je dois faire une vérification de sécurité pour éviter XSS ou d'autres choses (pas d'injection mysql puisque nous n'avons pas de base de données). Ce que j'ai trouvé est le suivant.
$page = $_GET['page'];
if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
!strpos($page, '\\') || !strpos($page, '..')) {
//append ".php" to $page and include the page
Y at-il autre chose que je peux faire pour désinfecter mon entrée?
Ne pas vérifier le résultat de strpos() comme ça - il retournera zéro si la correspondance est au début de la chaîne, ce qui évaluera à faux –
@Tom, la solution acceppted permet moi aussi j'évite ça, de toute façon merci, je me souviendrai de tes conseils pour le futur code. –
Voir aussi: http://stackoverflow.com/a/15825812/59087 –