Voila mon problème. Un utilisateur de mon site à trouvé une faille, d'un type que je n'avais jamais vu. Il réussit à faire planter apache en injectant du texte dans l'url. Après installation d'un système me permettant de savoir la page qu'il utilise, j'ai fini par trouver (les logs d'apache faisaient plus de 1 Go, donc inouvrables et inexploitables
Il utilise cette technique un peu partout, et ca fonctionne sur l'immense majorité des pages du site. Il injecte de cette facon :
/sujet.php?id=http://217.218.225.2:2082/index.html?
La variable info est sensée être un nombre. La variable est bien traitée pour éviter les injections SQL, et ne pose aucun problème au serveur SQL, à part un message d'erreur car ce n'est pas le bon type de données. Après vérification de mon code, je pense que ca vient de cette ligne :
header('Location: repondre.php?id='.$_GET['id']);
Alors ma première question : Comment une telle ligne peut-elle faire planter apache ?Malgré les risques, je suis allé voir l'url qu'il injecte depuis mon navigateur, et il s'agit simplement d'une page de login d'un cpanel, donc rien de méchant.
Deuxième question : Mon site comporte un trop grand nombre de pages pour que je les modifie toutes à la main. Donc mon idée, même si c'est un peu bourrin, serait de, dans une des pages qui est utilisée partout (header.php), filtrer les variables GET, et supprimer celles contenant une url (car je pense que sa méthode fonctionne avec d'autres urls). Donc comment identifier une chaine comme url ?
Merci.