* Pas de moyen de savoir si la requête est valide ou non
* Pas de moyen de savoir si la **payload** a été éxécutée ou non
* cas d'une redirection systématique
* nécessite en général d'itérer
* avec un LIKE par exemple pour déduire lettre par lettre
...
...
@@ -349,9 +349,9 @@ Surname: Me
* Si aucun output n'est disponible
* on ajoute du calcul artificiellement
* la requête est valide
* la **payload** est exécutée
* le temps de réponse = temps de traitement + temps de calcul artificiel
* la requête est invalide
* la **payload** n'est pas exécutée
* le temps de réponse = temps de traitement
problématique similaire à une booléenne
...
...
@@ -361,6 +361,20 @@ Note:
- in fine même problème une fois scripter
## <i class="fa fa-medkit"></i> Se préserver
*[Ne plus utiliser les fonctions mysql_ leur préférer mysqli_](http://stackoverflow.com/questions/548986/mysql-vs-mysqli-in-php)
* Utiliser des requêtes préparées
* PDO, ORM : Doctrine2, Propel
* Être le plus silencieux possibles quant aux requêtes invalides
*[@](http://php.net/manual/fr/language.operators.errorcontrol.php) mais pas [or die()](http://php.net/manual/fr/function.die.php)
*[error_reporting](http://php.net/manual/fr/function.error-reporting.php), pas [mysql_error()](http://php.net/mysql_error) ni [mysqli_error()](http://php.net/manual/fr/mysqli.error.php)
* repérer les requêtes suspectes dans les logs
Note:
- TODO regarder si les messages sont désactiables à partir de MySQL
## <i class="fa fa-medkit"></i> Se préserver
* Filtrage par listes blanches
...
...
@@ -382,17 +396,3 @@ Note:
* attention aux permissions sur la base de données
* information_schema ...
* Changer les préfixes de table des CMS quand c'est possible
## <i class="fa fa-medkit"></i> Se préserver
*[Ne plus utiliser les fonctions mysql_ leur préférer mysqli_](http://stackoverflow.com/questions/548986/mysql-vs-mysqli-in-php)
* Utiliser des requêtes préparées
* PDO, ORM : Doctrine2, Propel
* Être le plus silencieux possibles quant aux requêtes invalides
*[@](http://php.net/manual/fr/language.operators.errorcontrol.php) mais pas [or die()](http://php.net/manual/fr/function.die.php)
*[error_reporting](http://php.net/manual/fr/function.error-reporting.php), pas [mysql_error()](http://php.net/mysql_error) ni [mysqli_error()](http://php.net/manual/fr/mysqli.error.php)
* repérer les requêtes suspectes dans les logs
Note:
- TODO regarder si les messages sont désactiables à partir de MySQL