Classifier les données traitées, stockées ou transmises par l'application. Identifier quelles données sont sensibles selon les lois concernant la protection de la vie privée, les exigences réglementaires ou les besoins métier.
Ne pas stocker de données sensibles sans que cela ne soit nécessaire. Les rejeter ou utiliser une tokenisation conforme à la norme de sécurité de l’industrie des cartes de paiement (PCI DSS). Les données que l’on ne possède pas ne peuvent être volées.
S'assurer de chiffrer toutes les données sensibles au repos.
Choisir des algorithmes éprouvés et générer des clés robustes. S'assurer qu'une gestion des clés est en place.
Chiffrer toutes les données transmises avec des protocoles sécurisés tels que TLS. Forcer le chiffrement en utilisant des directives comme HTTP Strict Transport Security (HSTS).
Désactiver le cache pour les réponses contenant des données sensibles.
Appliquer les contrôles de sécurité requis selon la classification de la donnée.
Ne pas utiliser des protocoles obsolètes tels que
FTP et SMTP pour échanger des données sensibles.
Stocker les mots de passe en utilisant des fonctions de hachage avec salage et facteur de délai, telles que Argon2, scrypt, bcrypt ou PBKDF2.
Les vecteurs d'initialisation doivent être choisis de façon appropriée au mode d'opération. Pour la plupart des modes, cela signifie utiliser un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé (CSPRNG ). Dans tous les cas, un vecteur d'initialisation ne devrait pas être utilisé deux fois pour une clé fixe.
S'assurer qu'une génération cryptographiquement aléatoire est utilisée là où c'est approprié, et qu'elle n'a pas une graine aléatoire prévisible ou avec une faible entropie.