quand j'utilise Acunetix sur ma page je reçois une: injection SQL aveugle/XPathaveugle SQL Injection
tête: GET /file.php?id=2'+and+31337-31337=0+-- + & page = 2
réponse:
aucun résultat
(parfois montre des résultats)ici est mon code php:
$id = (int) htmlentities($_GET['id']);
$fileid = mysql_real_escape_string($id);
la requête:
SELECT * FROM `files` WHERE `id` = '".$fileid."'
ce que je fais mal? quelqu'un peut-il effacer ma base de données juste avec cela? je reçois également le même message à quelques requêtes presque égales à celle-là mais qui ont aussi la limite 0,1
J'utilise paginator (j'ai fixé quelques injections qui dans ce script) mais l'exemple que j'ai donné son pas l'utiliser
Il utilise déjà 'mysql_real_escape_string()', cela n'est pas nécessaire. –
mais pour les cas où je ne lance rien et n'utilise que l'échappement réel + htmlentities, puis-je être vulnérable à ces attaques? Je ne peux reproduire aucune des injections que me donne acunetix. Même quand je mets un 'je n'obtiens pas d'erreur juste un ID invalide –
Ce que je veux dire, c'est que vous n'avez pas besoin de htmlentities et mysql_real_escape_string si vous le lancez simplement sur int, mais dans le code exemple, il les utilise tous les trois temps. Bien sûr, si id peut être une chaîne alors mysql_real_escape_string est le bon choix, sinon, (int) peut aussi résoudre ce problème. – Akinzekeel