Cas pratiques Secure Coding

30 cas pratiques Secure Coding disponibles. Niveaux : fondamental (10), avancé (10), expert (10).

Fait partie de : Cas pratiques de sécurité informatique

FondamentalSecure Coding

Gestion sécurisée des mots de passe avec hachage

Contexte : Une application web stocke des informations sensibles sur les utilisateurs, y compris des mots de passe. Le Problème : Les mots de passe sont stockés en texte clair dans la base de données, ce qui est une pratique risquée en cas de fuite de données. Contraintes : Vous devez implémenter un mécanisme de hachage pour sécuriser les mots de passe avant leur stockage. Livrable attendu : Proposer une méthode sécurisée de hachage des mots de passe, par exemple avec bcrypt, et expliquer comment vérifier les mots de passe lors de la connexion.

secure-codingpassword-hashingsecurity+2
FondamentalSecure Coding

Gestion sécurisée des sessions avec expiration automatique

Contexte : Une application permet aux utilisateurs de rester connectés pendant de longues périodes sans se déconnecter. Le Problème : Les sessions restent actives même après une longue période d’inactivité, exposant le système à des risques d’usurpation de session. Contraintes : Vous devez implémenter un mécanisme d’expiration des sessions après une période d’inactivité définie. Livrable attendu : Proposer une méthode de gestion des sessions qui expire automatiquement après un délai d'inactivité et fournir une solution de gestion des cookies sécurisée.

secure-codingsession-managementsecurity+2
FondamentalSecure Coding

Prévention des injections SQL dans une requête de base de données

Contexte : Une application web utilise un formulaire de connexion pour interroger une base de données. Le Problème : Une requête SQL mal sécurisée permet à un attaquant d’exécuter du code SQL arbitraire et d’accéder aux données sensibles. Contraintes : Vous devez sécuriser la requête en utilisant des requêtes préparées sans altérer la structure de la base de données. Livrable attendu : Proposer une version sécurisée de la requête en utilisant des requêtes préparées ou un ORM afin de prévenir les injections SQL.

secure-codingsql-injectionsecurity+2
FondamentalSecure Coding

Protection contre le stockage de données sensibles en clair

Contexte : Une application stocke des informations sensibles comme des numéros de carte bancaire dans une base de données. Le Problème : Les données sensibles sont stockées en texte clair, ce qui expose les utilisateurs à des risques en cas de fuite. Contraintes : Vous devez implémenter un chiffrement robuste pour ces données sensibles avant leur stockage. Livrable attendu : Proposer une stratégie de chiffrement des données sensibles, comme l’utilisation de l’AES, et expliquer comment gérer les clés de chiffrement de manière sécurisée.

secure-codingencryptionsensitive-data+2
FondamentalSecure Coding

Protection contre les attaques par force brute sur les mots de passe

Contexte : L’application permet aux utilisateurs de se connecter via un mot de passe simple, sans mécanisme de protection contre les attaques par force brute. Le Problème : L’application est vulnérable à des attaques par force brute où un attaquant peut essayer de deviner les mots de passe des utilisateurs. Contraintes : Vous devez implémenter un mécanisme de limitation du nombre de tentatives de connexion pour éviter ce type d’attaque. Livrable attendu : Proposer une stratégie de gestion des tentatives de connexion, incluant un verrouillage temporaire des comptes après plusieurs tentatives infructueuses et l’implémentation d’un CAPTCHA.

secure-codingbrute-forcesecurity+2
FondamentalSecure Coding

Sanitisation des entrées pour éviter les attaques XSS

Contexte : Une application web permet aux utilisateurs de soumettre des commentaires qui seront affichés publiquement. Le Problème : L'application ne filtre pas correctement les entrées des utilisateurs, ce qui permet l'injection de scripts malveillants dans les pages web. Contraintes : Vous devez appliquer une validation et une sanitisation strictes des entrées avant de les afficher sur la page. Livrable attendu : Proposer une solution de validation et d’assainissement des entrées, en utilisant des bibliothèques comme OWASP Java Encoder pour éviter les attaques XSS.

secure-codingxssinput-validation+2
FondamentalSecure Coding

Sécurisation des communications via HTTPS

Contexte : Une application web expose des informations sensibles comme les identifiants d'utilisateur et les informations personnelles via HTTP. Le Problème : La transmission des données sensibles en clair peut être interceptée par un attaquant sur le réseau. Contraintes : Vous devez implémenter HTTPS sur l’ensemble de l’application pour sécuriser les communications. Livrable attendu : Proposer une configuration HTTPS avec un certificat SSL/TLS valide et expliquer les pratiques sécuritaires, comme la redirection HTTP vers HTTPS et la gestion des certificats.

secure-codinghttpsssl+2
FondamentalSecure Coding

Sécurisation des fichiers téléchargés par les utilisateurs

Contexte : Une application permet aux utilisateurs de télécharger des fichiers, mais ne vérifie pas correctement leur contenu. Le Problème : Les utilisateurs peuvent télécharger des fichiers malveillants contenant des scripts ou des programmes exécutables. Contraintes : Vous devez mettre en place une validation stricte des fichiers téléchargés pour garantir leur sécurité. Livrable attendu : Proposer une solution qui vérifie le type de fichier, son contenu et sa taille avant de l’accepter, en utilisant des outils comme File Extension Validation, Magic Bytes ou autres méthodes de validation des fichiers.

secure-codingfile-uploadsecurity+2
FondamentalSecure Coding

Utilisation de requêtes préparées pour éviter les injections SQL

Contexte : Une application web interagit avec une base de données SQL pour afficher des données sur les utilisateurs. Le Problème : Des requêtes SQL dynamiques permettent à un attaquant d'exécuter des commandes arbitraires. Contraintes : Vous devez sécuriser l'interaction avec la base de données en utilisant des requêtes préparées pour éviter les injections SQL. Livrable attendu : Proposer une version de la requête SQL qui utilise des requêtes préparées pour empêcher les attaques par injection.

secure-codingsql-injectionsecurity+2
FondamentalSecure Coding

Vérification des entrées pour éviter les attaques par injection de commandes

Contexte : Une application web permet aux utilisateurs de soumettre des commandes système via un formulaire d'interface. Le Problème : L’application n'effectue pas de validation adéquate des entrées, ce qui permet à un attaquant d'exécuter des commandes arbitraires sur le système. Contraintes : Vous devez vérifier et assainir les entrées des utilisateurs pour empêcher toute injection de commande malveillante. Livrable attendu : Proposer une solution de validation stricte et d’assainissement des entrées, en utilisant des bibliothèques de validation des entrées ou en imposant des règles sur les entrées autorisées.

secure-codingcommand-injectionsecurity+2
AvancéSecure Coding

Chiffrement des mots de passe avec algorithmes modernes

Contexte : Une application utilise un stockage basique pour les mots de passe des utilisateurs. Le Problème : Les mots de passe sont stockés en texte clair ou avec un hachage obsolète. Contraintes : Implémenter une méthode de hachage sécurisé pour les mots de passe en utilisant des algorithmes comme bcrypt, Argon2 ou PBKDF2. Livrable attendu : Proposer un algorithme de hachage sécurisé, avec l'ajout de salt et une explication sur le processus de vérification des mots de passe.

secure-codingpassword-hashingsecurity+2
AvancéSecure Coding

Contrôle d'accès basé sur des rôles dans une API

Contexte : Une API permet aux utilisateurs de manipuler des ressources sensibles en fonction de leurs rôles. Le Problème : L'API ne contrôle pas correctement les rôles des utilisateurs pour certaines actions, permettant à un utilisateur de niveau inférieur d'accéder à des ressources restreintes. Contraintes : Implémenter un contrôle d'accès basé sur les rôles (RBAC) pour restreindre l'accès aux ressources en fonction du rôle d'un utilisateur. Livrable attendu : Proposer une solution basée sur le contrôle d'accès basé sur les rôles, avec des mécanismes de vérification des autorisations au niveau des endpoints API.

secure-codingauthorizationrbac+2
AvancéSecure Coding

Implémentation de HTTPS avec redirection automatique

Contexte : Une application web expose des données sensibles sur un serveur HTTP non sécurisé. Le Problème : L'application est vulnérable aux attaques de type Man-In-The-Middle (MITM) car les informations sont envoyées en clair. Contraintes : Vous devez forcer l'utilisation de HTTPS et rediriger automatiquement tout le trafic HTTP vers HTTPS. Livrable attendu : Proposer une solution de mise en œuvre de HTTPS avec un certificat valide et une redirection automatique de toutes les connexions HTTP vers HTTPS.

secure-codinghttpsssl+2
AvancéSecure Coding

Mise en œuvre d'une validation avancée des entrées utilisateur

Contexte : Une application reçoit des entrées utilisateur via plusieurs formulaires sur le site. Le Problème : Les données envoyées par les utilisateurs peuvent inclure des caractères malveillants ou des commandes exécutables. Contraintes : Vous devez implémenter une validation stricte des entrées utilisateur pour bloquer les caractères spéciaux et les scripts malveillants. Livrable attendu : Proposer une solution robuste de validation des entrées, incluant des techniques comme la validation sur le type, la longueur et le format des données.

secure-codinginput-validationsecurity+2
AvancéSecure Coding

Mise en place d'une gestion des erreurs sécurisée

Contexte : Une application web affiche des messages d’erreur détaillés aux utilisateurs. Le Problème : Ces messages d’erreur exposent des informations internes comme les chemins de fichiers, les requêtes SQL, et d'autres données sensibles. Contraintes : Vous devez masquer ces informations et enregistrer les erreurs dans un fichier de log sécurisé pour les administrateurs. Livrable attendu : Proposer une solution de gestion des erreurs qui filtre les informations sensibles et logue les erreurs de manière sécurisée.

secure-codingerror-handlingsecurity+2
AvancéSecure Coding

Prévention de l'injection de commandes via des inputs utilisateurs

Contexte : Une application web permet aux utilisateurs de soumettre des commandes système pour effectuer certaines actions. Le Problème : L'application ne vérifie pas correctement les entrées et permet l'injection de commandes arbitraires. Contraintes : Vous devez implémenter une validation stricte des entrées pour empêcher les attaques par injection de commandes. Livrable attendu : Proposer une méthode sécurisée pour valider les entrées et éviter l'exécution de commandes non autorisées, incluant des techniques comme l’utilisation de whitelists et des fonctions de validation.

secure-codingcommand-injectionsecurity+2
AvancéSecure Coding

Prévention des attaques par force brute sur les mots de passe

Contexte : L’application permet aux utilisateurs de se connecter à l'aide de leur mot de passe. Le Problème : L’application n'applique aucune protection contre les attaques par force brute, ce qui permet à un attaquant de tenter de deviner un mot de passe en plusieurs essais. Contraintes : Vous devez implémenter un mécanisme de limitation des tentatives de connexion et de verrouillage de compte après un certain nombre d’échecs. Livrable attendu : Proposer une solution de gestion des tentatives de connexion incluant un verrouillage temporaire ou une CAPTCHA après plusieurs tentatives échouées.

secure-codingbrute-forcesecurity+2
AvancéSecure Coding

Sécurisation des cookies de session

Contexte : Une application web utilise des cookies pour maintenir l'état de la session des utilisateurs. Le Problème : Les cookies ne sont pas correctement sécurisés, ce qui permet à un attaquant de les intercepter et de voler les sessions. Contraintes : Vous devez implémenter les paramètres de sécurité des cookies comme HttpOnly, Secure et SameSite pour empêcher l'accès non autorisé. Livrable attendu : Proposer une solution sécurisée de gestion des cookies avec les bons paramètres pour éviter les attaques de type Cross-Site Scripting (XSS) et Cross-Site Request Forgery (CSRF).

secure-codingcookiessecurity+2
AvancéSecure Coding

Sécurisation des fichiers téléchargés par les utilisateurs

Contexte : Une application permet aux utilisateurs de télécharger des fichiers image via un formulaire. Le Problème : L'application ne vérifie pas les types de fichiers téléchargés et peut accepter des fichiers malveillants comme des scripts ou des fichiers exécutables. Contraintes : Implémenter une validation stricte des fichiers téléchargés, incluant la vérification des types MIME et des extensions des fichiers. Livrable attendu : Proposer une méthode sécurisée pour valider les fichiers téléchargés et éviter les attaques par téléchargement de fichiers malveillants.

secure-codingfile-uploadvalidation+2
AvancéSecure Coding

Validation des entrées de formulaire pour prévenir les injections de commandes

Contexte : Une application web permet aux utilisateurs de soumettre des informations via des formulaires d'interface. Le Problème : L’application ne valide pas correctement les entrées et permet l'injection de commandes malveillantes. Contraintes : Vous devez valider et assainir les entrées avant leur traitement pour éviter les attaques par injection. Livrable attendu : Proposer une solution de validation des entrées côté serveur et côté client pour empêcher les attaques par injection de commandes.

secure-codingcommand-injectionsecurity+2
ExpertSecure Coding

Gestion des erreurs et des exceptions sécurisées dans une application complexe

Contexte : Une application web contient de nombreux modules interconnectés, générant des erreurs et des exceptions au niveau des processus métier et des bases de données. Le Problème : Les erreurs ne sont pas gérées correctement et exposent des informations sensibles, ce qui peut être exploité par des attaquants. Contraintes : Implémenter une gestion d'erreurs centralisée, cachant les détails des erreurs aux utilisateurs tout en enregistrant des informations critiques pour l’audit interne. Livrable attendu : Proposer une stratégie de gestion des erreurs avec un mécanisme centralisé de logging sécurisé et un contrôle strict sur les messages d’erreur visibles par l’utilisateur.

secure-codingerror-handlingsecurity+2
ExpertSecure Coding

Implémentation de contrôles d’accès dynamiques basés sur les attributs (ABAC)

Contexte : Une application utilise des rôles fixes pour gérer l’accès aux ressources sensibles. Le Problème : L’accès est trop statique et ne prend pas en compte des facteurs contextuels comme l’emplacement, l’heure, ou d’autres attributs dynamiques qui pourraient restreindre l’accès aux ressources sensibles. Contraintes : Implémenter un modèle de contrôle d’accès basé sur des attributs (ABAC) afin d’offrir une gestion plus granulaire et flexible des permissions. Livrable attendu : Proposer une solution ABAC complète, incluant des règles dynamiques d’autorisation basées sur des attributs utilisateur et des attributs contextuels, en détaillant l'implémentation côté serveur.

secure-codingaccess-controlsecurity+2
ExpertSecure Coding

Implémentation de tests de sécurité automatisés pour l’intégration continue

Contexte : Une application web est développée avec un pipeline d’intégration continue pour déployer les nouvelles versions. Le Problème : Les tests de sécurité ne sont pas inclus dans le processus d’intégration continue, ce qui expose l’application à des vulnérabilités non détectées. Contraintes : Ajouter des tests de sécurité dans le pipeline CI/CD pour vérifier la présence de vulnérabilités comme les injections SQL, XSS et la gestion des sessions. Livrable attendu : Proposer une solution pour intégrer des tests de sécurité automatisés dans un pipeline CI/CD, en utilisant des outils comme OWASP ZAP, Burp Suite ou d’autres scanners de sécurité.

secure-codingci-cdsecurity+2
ExpertSecure Coding

Mise en place de protections contre les attaques XSS à l’échelle de l’application

Contexte : Une application web permet aux utilisateurs d’interagir avec des contenus dynamiques comme des commentaires et des messages. Le Problème : Le site est vulnérable aux attaques XSS, car les entrées utilisateurs sont affichées sans assainissement approprié, permettant l'injection de JavaScript malveillant. Contraintes : Implémenter une validation et un assainissement des données utilisateurs à l'échelle de l'application pour prévenir les attaques XSS. Livrable attendu : Proposer une solution globale de prévention XSS en utilisant des bibliothèques comme OWASP Java Encoder, l'encodage des caractères spéciaux et la mise en place d’une politique de sécurité du contenu (CSP).

secure-codingxssinput-validation+2
ExpertSecure Coding

Prévention des attaques par contournement de sécurité via des configurations vulnérables

Contexte : Un serveur web et une application utilisent des configurations par défaut qui n’ont pas été sécurisées. Le Problème : Ces configurations exposent l’application à des attaques telles que l'accès non autorisé aux fichiers sensibles. Contraintes : Analyser et sécuriser les configurations du serveur, des bases de données et des services tiers utilisés par l’application. Livrable attendu : Fournir une liste de configurations sécurisées, en détaillant les pratiques recommandées pour renforcer les paramètres des serveurs, des bases de données et des services tiers.

secure-codingconfigurationsecurity+2
ExpertSecure Coding

Prévention des attaques par injection SQL complexes dans des requêtes dynamiques

Contexte : Une application utilise des requêtes SQL dynamiques pour récupérer les données utilisateur à partir de paramètres externes. Le Problème : Les requêtes peuvent être manipulées par un attaquant pour exécuter des instructions SQL malveillantes, compromettant ainsi la sécurité de la base de données. Contraintes : Vous devez sécuriser toutes les requêtes SQL dynamiques tout en préservant la logique métier de l’application. Livrable attendu : Proposer une solution utilisant des requêtes préparées, des ORM, ou des procédures stockées pour éviter les injections SQL tout en optimisant les performances.

secure-codingsql-injectionsecurity+2
ExpertSecure Coding

Protection des mots de passe avec un hachage fort et stockage sécurisé

Contexte : Une application gère des comptes utilisateurs et nécessite la gestion de mots de passe. Le Problème : Les mots de passe sont stockés en utilisant un algorithme de hachage obsolète, exposant ainsi les utilisateurs à un risque de fuite de données sensibles. Contraintes : Vous devez appliquer un algorithme de hachage moderne, tel que bcrypt ou Argon2, et sécuriser la gestion des clés utilisées pour ce hachage. Livrable attendu : Proposer une solution complète de gestion sécurisée des mots de passe, en détaillant l’utilisation d'un algorithme de hachage sécurisé, l'ajout de "salts", et l'implémentation d'une méthode de vérification des mots de passe.

secure-codingpassword-hashingsecurity+2
ExpertSecure Coding

Sécurisation des API avec des mécanismes d’authentification robustes

Contexte : Une API permet aux utilisateurs de récupérer et de modifier des informations sensibles. Le Problème : L'API ne vérifie pas correctement l'authentification et les permissions des utilisateurs avant d'accorder l'accès aux ressources. Contraintes : Implémenter des mécanismes d’authentification forte pour sécuriser les API, comme OAuth2 ou des tokens JWT signés. Livrable attendu : Proposer une solution complète d'authentification sécurisée pour l'API, avec la gestion des tokens d’accès, leur expiration et leur renouvellement.

secure-codingapiauthentication+2
ExpertSecure Coding

Sécurisation des API contre l'exécution de code malveillant via des entrées non validées

Contexte : Une API expose des points d’accès qui traitent des informations sensibles des utilisateurs, telles que des paramètres de configuration et des commandes systèmes. Le Problème : Les paramètres utilisateur ne sont pas validés correctement et peuvent être utilisés pour injecter des commandes malveillantes. Contraintes : Implémenter une validation des entrées plus stricte afin d'empêcher l’exécution de commandes malveillantes ou des attaques par injection. Livrable attendu : Proposer des mécanismes de validation des entrées utilisateurs, incluant des whitelists, un contrôle des types de données et une utilisation des fonctions de validation sécurisée pour empêcher l'exécution de code malveillant.

secure-codinginput-validationapi+2
ExpertSecure Coding

Utilisation de protocoles de chiffrement avancés pour protéger les communications

Contexte : Une application web utilise des communications sensibles avec les utilisateurs via HTTP. Le Problème : Les données sensibles sont envoyées en clair sur le réseau. Contraintes : Implémenter HTTPS et garantir que toutes les données sont transmises en utilisant des protocoles de chiffrement forts comme TLS 1.2 ou supérieur. Livrable attendu : Proposer une solution complète pour mettre en œuvre HTTPS avec des certificats SSL/TLS et expliquer les bonnes pratiques de sécurité, telles que la gestion des clés et la configuration des paramètres TLS.

secure-codinghttpsssl+2

Questions originales conçues par CodeDuel. CodeDuel n'est affilié à aucun éditeur ni organisme de certification cité ; les noms de certifications et les marques appartiennent à leurs titulaires et servent uniquement à indiquer le domaine couvert. Signaler un contenu

    Cas pratiques Secure Coding : 30 mises en situation | CodeDuel