Sanitize $ _GET paramètres pour éviter XSS et autres attaques
J'ai un site en php qui ne comprennent() pour incorporer le contenu dans un modèle. La page à charger est donné en paramètre get, j'ai ajouter ".php" à la fin du paramètre et de l'inclure la page. J'ai besoin de faire un peu de vérification de sécurité pour éviter les attaques de type XSS ou d'autres trucs (pas mysql injection puisque nous ne disposons pas d'une base de données). Ce que j'ai trouvé est la suivante.
$page = $_GET['page'];
if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
!strpos($page, '\\') || !strpos($page, '..')) {
//append ".php" to $page and include the page
Est-il autre chose que je peux faire pour furtherly désinfecter mon entrée?
source d'informationauteur Federico klez Culloca
Vous devez vous connecter pour publier un commentaire.
Est probablement le moyen le plus rapide pour désinfecter les ce, cela va prendre quoi que ce soit et assurez-vous qu'il ne contient que des lettres, des chiffres, des traits de soulignement ou des tirets.
Ne pas "nettoyer" les Attaques sont spécifiques à l'utilisation des données, et non la source. Échapper à des valeurs comme la leur sortie à la place. Voir aussi ma réponse à Quelle est la meilleure méthode pour nettoyer les entrées utilisateur avec PHP?
Définir une liste explicite de pages que vous avez dans votre code source et ensuite de l'utiliser pour vérifier l'entrée. Oui, c'est plus de travail, mais il le fait très clairement ce qui est permis et ce qui ne l'est pas. Par exemple: