S'informer
Top 10 OWASP (owasp.org - Top Ten)
10 vulnérabilités les plus critiques des applications web
Pour plus de détail : GitHub - CheatSheetSeries
Injection : Injection de commandes SQL, shell, LDAP, etc. (Serveur)
Broken Authentication : Faille dans l'authentification permettant la récupération d'identifiants, le vol de mots de passe, etc.
Sensitive Data Exposure : Exposition de données sensibles
XML External Entities (XXE) : Exploitation de failles d'un parser XML
Broken Access Control : Faille liée aux contrôles d'accès
Security Misconfiguration : Mauvaise configuration des serveurs, des bases de données, etc.
Cross-Site Scripting (XSS) : Injection de code dans une page HTML
Insecure Deserialization : Exploitation de failles de désérialisation en envoyant des payloads malicieuses
Components with Known Vulnerabilities : Il existe des listes de vulnérabilités connues (ex : cwe.mitre.org)
Insufficient Logging & Monitoring : Trop peu de log et de moyens de supervision
OWASP ASVS
Liste de principes de sécurité utilisables par des développeurs, des architectes ou des testeurs.
Grands principes à suivre
Défense en profondeur
Plusieurs modes de sécurisation pour un même risque
Ex : ORM + compte lecture seule + valider les entrées
Le front-end n'est pas sûr
Le serveur sécurise tout ce qui entre :
- Valider le type, le format et la taille des données
- Vérifier les droits d’accès à chaque requête
- Valider les chemins d'accès aux ressources
- Utiliser un ORM ou des requêtes SQL paramétrées
Le front-end n'a pas accès aux jetons d'authentification
- Cookies http-only et secure
Les données peuvent être corrompues
Le front-end sécurise la page affichée :
- Encoder tous les caractères HTML
Bannir la sécu « maison »
Utiliser des librairies reconnues pour :
- Les fonctions d'authentification
- La gestion de sessions
- Le chiffrement (mots de passe et autres données)
Pour hasher vos mots de passe, choisissez parmi Argon2, PBKDF2, Scrypt et Bcrypt
Se tenir à jour
Mettre à jour fréquemment les frameworks et bibliothèques utilisés
Pour savoir si cela est nécessaire, vérifier les vulnérabilités connues avec des outils dédiés
- Checkmarx
- Owasp Dependency Check (Maven)
- Npm audit (JS)
- Security Checker (PHP)