Réponse acceptée !
NON, mais presque !!! Tu n'étais vraiment pas loin et grâce à toi j'ai trouvé, ça m'a fait tilt

En toute honnêteté j'ai galèré il y a peu pour trouver la faille (j'étais intimement persuadé qu'il y en avait une), mais bon, tu sais comment c'est, quand on a trop la tête dedans on ne voit plus rien.
Une chaîne vide, comme tu l'indiques, génère une erreur, ça ne passe donc pas.
Par contre, une injection sql de '""' et un champ vide dans la réponse et le tour est joué !!
cad :
envoi en POST de l'équivalent de :
<input value='""' name="numeroVerif" type="hidden" size="78" />
et rien dans le champ réponse
Alors :
if (!testVerif($numeroVerif,$reponseVerif) || empty($numeroVerif) || empty($reponseVerif)
=>
if (!testVerif($numeroVerif,$reponseVerif) || empty($numeroVerif) || empty($reponseVerif) || !is_numeric($numeroVerif))
Mais il y a encore pas mal de choses à sécuriser :
- tes questions qui sont trop simples (cf mes précédents posts)
- tes variables issues du formulaire qui ne sont pas contrôlées :
il est facile de faire une injection SQL pour que tous tes numeroVerif aient le même numéro, etc ...
- les die des requêtes sont très facile à générer et ils renseignent beaucoup trop sur la structure de ta base (c'est bon pour le debug uniquement)
- ...
Je pense que le principe n'est pas mauvais. Une fois corrigé les remarques tu ne devrait plus avoir d'ennui. Si c'est encore le cas il est possible de complexifier encore, avec l'utilisation des cookies, la mise en place d'un nombre d'essais à la minute, un filtrage des robots connus, ...
Tiens nous informé stp,
Kohntark -