Les codeurs conquièrent la sécurité : Série "Partageons et apprenons" - Faiblesses de la gestion des sessions
Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.
Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.
Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.
Comprendre les faiblesses de la gestion des sessions
Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.
La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.
Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.
Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.
Pourquoi une mauvaise gestion des sessions est dangereuse
Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.
Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.
Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.
Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.
La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.
Déjouer la gestion des sessions non sécurisées
La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.
Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:
Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner
Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.
Les sessions sont automatiquement invalidées après un certain temps.
Les identifiants de session sont modifiés après la connexion de l'utilisateur.
Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.
Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.
Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.
Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.
Sécurisez vos sessions
Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.
Les sessions sont la clé d'une bonne expérience utilisateur lors de l'utilisation du web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationJaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.
Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.
Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.
Comprendre les faiblesses de la gestion des sessions
Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.
La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.
Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.
Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.
Pourquoi une mauvaise gestion des sessions est dangereuse
Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.
Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.
Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.
Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.
La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.
Déjouer la gestion des sessions non sécurisées
La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.
Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:
Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner
Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.
Les sessions sont automatiquement invalidées après un certain temps.
Les identifiants de session sont modifiés après la connexion de l'utilisateur.
Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.
Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.
Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.
Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.
Sécurisez vos sessions
Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.
Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.
Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.
Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.
Comprendre les faiblesses de la gestion des sessions
Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.
La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.
Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.
Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.
Pourquoi une mauvaise gestion des sessions est dangereuse
Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.
Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.
Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.
Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.
La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.
Déjouer la gestion des sessions non sécurisées
La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.
Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:
Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner
Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.
Les sessions sont automatiquement invalidées après un certain temps.
Les identifiants de session sont modifiés après la connexion de l'utilisateur.
Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.
Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.
Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.
Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.
Sécurisez vos sessions
Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.
Cliquez sur le lien ci-dessous et téléchargez le PDF de cette ressource.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Voir le rapportRéservez une démonstrationJaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Vous vous rendez sur un site web et vous vous connectez. Comme d'habitude, vous remplissez votre panier avec les produits que vous souhaitez acheter. Puis, oups, votre main glisse et ferme l'onglet du navigateur. Après une petite panique, vous entrez à nouveau l'URL du site dans le navigateur et appuyez sur la touche "Entrée". Vous revenez sur le site, vous êtes connecté et tous vos articles sont encore dans le panier. C'est bien.
Comment le site a-t-il su qui vous étiez sans vous ré-authentifier ? Il vous a identifié parce qu'il utilisait des sessions. Les sessions sont la clé d'une bonne expérience utilisateur sur le web. Cependant, une mauvaise gestion des sessions peut entraîner des failles de sécurité que les pirates peuvent exploiter.
Voyons maintenant ce que signifie la gestion des sessions, comment une gestion insuffisante des sessions peut vous nuire et ce que vous pouvez faire pour gérer correctement les sessions.
Comprendre les faiblesses de la gestion des sessions
Une session fait référence à une valeur stockée sur le serveur, spécifique à un seul utilisateur de l'application. Cela est nécessaire pour deux raisons : Premièrement, HTTP est un protocole sans état. Chaque demande est distincte et ne connaît pas les demandes qui l'ont précédée ou suivie. Une session permet au serveur de savoir qui a envoyé la requête. Sinon, vous devriez vous connecter chaque fois que vous cliquez sur un bouton ou un lien.
La deuxième raison d'être des sessions est l'autorisation de l'utilisateur. L'identifiant de session peut être utilisé pour reconnaître un utilisateur spécifique disposant de droits spécifiques au sein du système. L'application saura qui est cette personne et ce qu'elle est autorisée à faire.
Une session se compose de deux éléments. Un magasin de données côté serveur stocke un identifiant de session et l'associe à des informations sur l'utilisateur, telles que son nom d'utilisateur ou les informations relatives à son panier. Le même identifiant de session est envoyé au navigateur dans un cookie. Les cookies sont stockés par le navigateur sur le système de l'utilisateur. Le client transmet le cookie à chaque demande, ce qui permet au serveur de savoir que cette demande provient du même utilisateur. La plupart des applications utilisent les sessions pour suivre les utilisateurs avant et après l'authentification.
Une bonne gestion des sessions est essentielle à la sécurité d'une application. Un identifiant de session valide a le même niveau de confiance qu'un nom d'utilisateur/mot de passe, ou même qu'un jeton d'authentification à deuxième facteur.
Pourquoi une mauvaise gestion des sessions est dangereuse
Une mauvaise gestion des sessions peut conduire à une prise de contrôle totale du compte. Cela signifie que les données des clients peuvent être volées ou que des produits peuvent être achetés frauduleusement. Les attaquants disposent de plusieurs moyens pour obtenir un identifiant de session valide.
Une attaque par fixation de session se produit lorsque les sessions ne sont pas modifiées à des moments clés, comme lorsqu'un utilisateur se connecte au système, et si les identifiants de session peuvent être définis à l'aide de l'URL. La définition d'identifiants de session de cette manière peut être utilisée pour maintenir la connexion des utilisateurs dans différentes applications qui utilisent la même source d'authentification. Dans ce cas, un pirate peut naviguer sur un site web et obtenir un identifiant de session. Il envoie ensuite un URL à une victime peu méfiante par courrier électronique, avec l'identifiant de session dans l'URL. La victime clique sur l'URL du courriel et se connecte au site web. Si l'identifiant de session n'est pas modifié lors de la connexion, le pirate dispose alors d'un identifiant de session valide et authentifié. Cela permet une prise de contrôle complète du compte.
Une autre attaque contre une mauvaise gestion des sessions est une attaque par force brute. Lorsque les développeurs essaient de créer leurs propres systèmes de gestion de session, ils utilisent souvent des identifiants de session qui sont assez faciles à deviner. Il peut s'agir d'une séquence (1, 2, 3) ou d'un schéma prévisible. L'attaquant continue simplement à deviner les identifiants de session jusqu'à ce qu'il en découvre un valide. Cela conduit également à la prise de contrôle d'un compte.
Les sessions qui ne sont pas invalidées automatiquement après un certain temps peuvent être exploitées pour attaquer les utilisateurs. La réussite d'une attaque de type "cross-site request forgery " dépend des sessions qui sont encore valides après que l'utilisateur a quitté le site. Supposons qu'un pirate place une iframe ou une image sur un site visité par l'utilisateur. L'attribut "src" (source) est défini sur l'URL du site vulnérable et exécute une action au nom de l'utilisateur. Par exemple, une application bancaire vulnérable pourrait être utilisée pour transférer de l'argent sur le compte d'un attaquant sans l'autorisation de l'utilisateur.
La gestion des sessions peut être délicate et les faiblesses peuvent être dévastatrices. Il s'agit toutefois d'un problème bien connu qui peut être résolu.
Déjouer la gestion des sessions non sécurisées
La gestion des sessions est un élément essentiel de toute application web. C'est pourquoi de nombreux cadres de développement web intègrent une fonctionnalité de gestion des sessions. Ces systèmes ont été examinés de près par des experts afin de détecter et d'éliminer les problèmes. Utilisez-les.
Voici quelques-unes des caractéristiques communes d'une bonne gestion de session:
Génération d'identifiants de session aléatoires que les attaquants ne peuvent pas deviner
Les sessions sont invalidées lorsqu'un utilisateur se déconnecte.
Les sessions sont automatiquement invalidées après un certain temps.
Les identifiants de session sont modifiés après la connexion de l'utilisateur.
Les identifiants de session ont une longueur d'au moins 128 bits afin d'éviter les attaques par force brute.
Les frameworks web tels que Spring, ASP.NET Core, Rails et Django possèdent ces propriétés et devraient être utilisés pour leurs normes de sécurité plus élevées dans ce cas.
Conclusion : Ne créez pas votre propre système de gestion des sessions à partir de zéro.
Une fois les identifiants de session créés, ils doivent être protégés. Attribuez la valeur "true" aux indicateurs Secure et HttpOnly pour les cookies de session. Cela garantit que leur valeur ne peut pas être récupérée avec JavaScript et que le navigateur n'enverra le cookie que via HTTPS, empêchant ainsi les attaquants de voler la session de quelqu'un en cours de route.
Sécurisez vos sessions
Consultez nos ressources d'apprentissage gratuites pour en savoir plus sur la gestion sécurisée des sessions. Apprendre à sécuriser vos sessions vous aidera à prévenir la prise de contrôle des comptes utilisateurs, les atteintes à la réputation et les pertes de revenus dues aux failles de sécurité. Sécurisez vos sessions et protégez vos utilisateurs.
Table des matières
Jaap Karan Singh est un évangéliste du codage sécurisé, Chief Singh et cofondateur de Secure Code Warrior.
Secure Code Warrior est là pour vous aider à sécuriser le code tout au long du cycle de vie du développement logiciel et à créer une culture dans laquelle la cybersécurité est une priorité. Que vous soyez responsable AppSec, développeur, CISO ou toute autre personne impliquée dans la sécurité, nous pouvons aider votre organisation à réduire les risques associés à un code non sécurisé.
Réservez une démonstrationTéléchargerRessources pour vous aider à démarrer
Évaluation comparative des compétences en matière de sécurité : Rationalisation de la conception sécurisée dans l'entreprise
Le mouvement "Secure-by-Design" (conception sécurisée) est l'avenir du développement de logiciels sécurisés. Découvrez les éléments clés que les entreprises doivent garder à l'esprit lorsqu'elles envisagent une initiative de conception sécurisée.
DigitalOcean réduit sa dette de sécurité avec Secure Code Warrior
L'utilisation par DigitalOcean de la formation Secure Code Warrior a considérablement réduit la dette de sécurité, permettant aux équipes de se concentrer davantage sur l'innovation et la productivité. L'amélioration de la sécurité a renforcé la qualité des produits et l'avantage concurrentiel de l'entreprise. À l'avenir, le score de confiance SCW les aidera à améliorer leurs pratiques de sécurité et à continuer à stimuler l'innovation.
Ressources pour vous aider à démarrer
La note de confiance révèle la valeur des initiatives d'amélioration de la sécurité par la conception
Nos recherches ont montré que la formation au code sécurisé fonctionne. Le Trust Score, qui utilise un algorithme s'appuyant sur plus de 20 millions de points de données d'apprentissage issus du travail de plus de 250 000 apprenants dans plus de 600 organisations, révèle son efficacité à réduire les vulnérabilités et la manière de rendre l'initiative encore plus efficace.
Sécurité réactive contre sécurité préventive : La prévention est un meilleur remède
L'idée d'apporter une sécurité préventive aux codes et systèmes existants en même temps qu'aux applications plus récentes peut sembler décourageante, mais une approche "Secure-by-Design", mise en œuvre en améliorant les compétences des développeurs, permet d'appliquer les meilleures pratiques de sécurité à ces systèmes. C'est la meilleure chance qu'ont de nombreuses organisations d'améliorer leur sécurité.
Les avantages de l'évaluation des compétences des développeurs en matière de sécurité
L'importance croissante accordée au code sécurisé et aux principes de conception sécurisée exige que les développeurs soient formés à la cybersécurité dès le début du cycle de développement durable, et que des outils tels que le Trust Score de Secure Code Warriorles aident à mesurer et à améliorer leurs progrès.
Assurer le succès des initiatives de conception sécurisée de l'entreprise
Notre dernier document de recherche, Benchmarking Security Skills : Streamlining Secure-by-Design in the Enterprise est le résultat d'une analyse approfondie d'initiatives réelles de conception sécurisée au niveau de l'entreprise, et de l'élaboration d'approches de meilleures pratiques basées sur des conclusions fondées sur des données.