3. Les paramètres entrée GET et POST
Entêtes HTTP et réponses HTTP
Sécurité des formats de données
Sécurité du contenu des données
Tests unitaires
Uniformité du code
Documentation automatique
Vérification des erreurs de sémantiques
4.
5. Élimination des paramètres inutiles
$allow=array(‘nom ’, ‘comments’);
foreach ($_POST as $key => $val) {
if (! in_array($allow, $key) {
unset($_POST[$key]);
}
}
6.
7. Retrait de toutes balises type META
Souvent présent dans les CMS (Joomla)
Retrait de toute information dans le code HTML
◦Nom du produit
◦Numéro de version
◦Souvent en commentaire
8.
9. Vérification de la taille des chaînes
◦if (count($_POST[‘nom’] > 255) { …}
Vérification du type
◦is_array, is_bool, is_callable, is_double, is_float, is_int, is_integer, is_long, is_null, isset, is_numéric, is_object, is_real, is_resource, is_scalar, is_string
10. Vérification format email:
◦if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9- ]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $email)){ …}
Vérification d’une date
◦If (!preg_match( '`^d{1,2}/d{1,2}/d{4}$`' , $value ) ) {…}
11. La fonction filter_var permet la validation de certains formats:
◦FILTER_VALIDATE_BOOLEAN
◦FILTER_VALIDATE_EMAIL
◦FILTER_VALIDATE_FLOAT
◦FILTER_VALIDATE_INT
◦FILTER_VALIDATE_IP
◦FILTER_VALIDATE_REGEXP
◦FILTER_VALIDATE_URL
14. La fonction filter_var permet l’épuration
◦FILTER_SANITIZE_EMAIL
◦FILTER_SANITIZE_ENCODED
◦FILTER_SANITIZE_MAGIC_QUOTES
◦FILTER_SANITIZE_NUMBER_FLOAT
◦FILTER_SANITIZE_NUMBER_INT
◦FILTER_SANITIZE_SPECIAL_CHARS
◦FILTER_SANITIZE_STRING
◦FILTER_SANITIZE_STRIPPED
◦FILTER_SANITIZE_URL
◦FILTER_UNSAFE_RAW
15.
16. Écriture de classe de tests
Héritage de PHPUnit_Framework_TestCase
Toutes les fonctions commençant par testXXX sont des tests unitaires.
Utilisation d’assertion ($this->assertXXX())
Important d’avoir une bonne couverture de test du code.
>80% est un minimum.
Éviter le syndrome du « bug de la dernière fois »
17.
18. Application systématique du reformatage
Possibilité de reformatage d’un ensemble de fichiers
Autorisation d’une meilleur coordination d’équipe
19.
20. Commentaires annotés systématique
◦Toutes les fonctions
◦Toutes les classes
◦Toutes les méthodes
◦Toutes les attributs
Prévision d’annotation(@) standard
Génération automatique de la doc API
◦phpDocumentor
23. Toujours activé par défaut
Activation du maximum de détection.
Corriger une erreur => apprendre un bon geste
24. Définition d’un tâche à faire dans le code
◦//@todo
◦//TODO
Quelque chose qui ne marche pas bien
◦//FIXME
Indication d’un hack sauvage de code
◦//HACK
Autres notes:
◦//XXX