3 votes

Filtrer les chaînes de requête URL pour les injections SQL - PHP

J'ai reçu un site à réparer qui a récemment été piraté en utilisant une injection SQL. D'après ce que je comprends, l'injecteur SQL automatisé Havij a été utilisé pour insérer du code dans les paramètres de la chaîne de requête de l'URL.

Le site est une construction de CMS personnalisée et un peu dépassée. Je ne pense pas qu'une reconstruction complète soit probable.

Quel est le meilleur moyen d'empêcher que cela se reproduise ? Je suis un développeur PHP, mais je me contente généralement de valider des formulaires ou d'utiliser des systèmes qui ont déjà cette fonctionnalité intégrée - wordpress, codeigniter, drupal, etc.

Toutes les idées ou réflexions sont appréciées.

Merci

3voto

zerkms Points 105994

Il n'y a qu'une règle simple : chaque variable (peu importe d'où elle provient - de l'utilisateur ou si c'est quelque chose déjà obtenu de la base de données) qui est introduite dans la requête SQL doit être nettoyée avec mysql_real_escape_string() avant.

Ou vous pourriez utiliser des requêtes préparées (déclarations préparées/placeholder), peu importe.

2voto

AntonioCS Points 3208

Vous ne pourrez peut-être pas modifier tout le code, mais peut-être pouvez-vous modifier le code de la base de données. Si c'est le cas, essayez d'utiliser PDO et des instructions préparées. Je recommande pdo car vous n'avez pas précisé le type de base de données. Si vous utilisez mysql, je pense que mysqli fournit également des instructions préparées.

0voto

ali alasady Points 49

$url = filter_var($url, FILTER_SANITIZE_URL);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X