home
Développement Web Sécurisé
Bonnes pratiques générales
print

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

  1. Injection : Injection de commandes SQL, shell, LDAP, etc. (Serveur)

  2. Broken Authentication : Faille dans l'authentification permettant la récupération d'identifiants, le vol de mots de passe, etc.

  3. Sensitive Data Exposure : Exposition de données sensibles

  4. XML External Entities (XXE) : Exploitation de failles d'un parser XML

  5. Broken Access Control : Faille liée aux contrôles d'accès

  6. Security Misconfiguration : Mauvaise configuration des serveurs, des bases de données, etc.

  7. Cross-Site Scripting (XSS) : Injection de code dans une page HTML

  8. Insecure Deserialization : Exploitation de failles de désérialisation en envoyant des payloads malicieuses

  9. Components with Known Vulnerabilities : Il existe des listes de vulnérabilités connues (ex : cwe.mitre.org)

  10. 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.

owasp.org - Application Security Verification Standard

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)