1. Objectifs
1.1. Intégrité des données
1.2. Confidentialité des données
1.3. Disponibilité des données
2. Utilisateurs
2.1. Utilisateurs lambda (maladroit)
2.2. Utilisateurs malveillants
2.3. logiciel malveillant
2.4. Sinistre (pas vraiment un utilisateur mais peut parfois interagire)
3. Input utilisateur
3.1. vérifier tout ce que l'utilisateur envois
3.1.1. injection sql
3.1.2. injection de commande DOS
3.1.3. File inclusion
3.1.4. Méthodes
3.1.4.1. analyse des caractères contenu dans une chaine envoyer par l'utilisateur
3.1.4.1.1. Regex
3.1.4.1.2. métacar
3.1.4.2. Protection de l'url
3.1.4.2.1. URL rewriting
3.2. envisager des solution par défaut si quelque chose ne correspond pas à un scénario classsique
3.3. Ergonomie
3.3.1. Simplifier l'utilisation du site
4. Canale de transmission
4.1. Utilisation Https
5. Traitement de donnée
5.1. éviter les fonctions à risques
5.1.1. Sinon faire les vérification nécessaire
5.2. Authentification
5.2.1. Apache+Php= méthode d'authentification http (crypté ou non)
5.3. Méthode de hashage
5.3.1. MD5 (à ne plus utiliser)
6. Accès aux données (BD)
6.1. Accès fichiers
6.1.1. restreindre les permissions d'accès (notammet celle du système)
6.1.2. Ajouter des règles d'accès
6.1.2.1. exemple: dans .htacess RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L] Cet exemple redirige toutes adresses autres que « index.php », « images » et « robot.txt » vers l’index.
6.2. accès BD
6.2.1. Création d'un profil aux authorisation restreintes
6.2.2. répartir implémentation logique entre script php et sgbd
7. Framework
7.1. PHP
7.1.1. Faire les mise à jours de manière fréquente
7.2. Apache
7.2.1. restraindre les accès de l'interpreteur PHP