Comment prévenir MySQL sommeil injections?

Récemment, un hacker essayé de ralentir mon site en utilisant le sommeil de l'injection. Bien que nous soyons à l'aide de précautions comme mysql_real_escape_string() pour couvrir la plupart de ces entrées. Nous sommes en train de id du produit à travers la chaîne de requête et il rend la commande comme:

$id = mysql_real_escape_string($_REQUEST['id']);
$qry = "Select * from products where id = ".$id;

mais hacker essayé de fournir des commentaires comme

?id=3 and sleep(4)

et de la requête devient

Select * from products where id = 3 and sleep(4);

Bien qu'il existe quelques solutions comme

  1. Vérifier si l'id de produit est numérique ou pas
  2. Supprimer mot de sommeil de l'entrée à l'aide de quelques personnalisé en fonction

Est-il une autre méthode pour arrêter cela? Quelle est la meilleure méthode pour empêcher le sommeil des injections?

  • Savez-vous que mysql_ fonctions sont obsolètes et vous ne devriez pas les utiliser?
  • Paramètre de liaison permet d'éviter ce
  • utilisation mysqli_ au lieu mysql_
  • Aye, regardez les instructions préparées non seulement à empêcher le sommeil de l'injection " (que je n'ai pas entendu parler), bur tous les types d'injection SQL.
  • +1 Meilleure question, j'ai lu aujourd'hui.
  • C'est un vieux site web et l'utilisation 5.3. Je pense que les fonctions mysql_ a été abandonné dans les dernières versions seulement
  • La Grande Évasion (Ou: Ce que Vous Devez Savoir Pour Travailler Avec du Texte Dans le Texte)
  • Certains des gens de répondre à cette question sont tellement polarisé, c'est incroyable. Je suggère fortement à quiconque se soucier de param filtrage et AOP de lire ce thread sur le sujet qui semble plus raisonnable et rationnelle—point de vue sur cette question.
  • double possible de Comment prévenir l'injection SQL en PHP?
  • En fait, l'attaquant ne peuvent pas voulu ralentir votre site web, mais lire tout le contenu de votre base de données à l'aide d'une fonction du temps à l'aveugle de la requête d'attaque. Le truc, c'est qu'il peut essayer de deviner octet par octet, en utilisant quelque chose comme ET <à titre de comparaison> == "UN" ET le SOMMEIL(5) - si la page met +5 secondes, puis la première hypothèse était VRAIE. Il est incroyable de voir comment l'ensemble de la base de données peut être lu comme ça (même si lent).