les cookies contiennent généralement une sessionID pour suivre une trace d'un utilisateur enregistré.
Qu'est-ce qui empêcherait un utilisateur malveillant de forger des millions de demandes avec des sessions aléatoires et de les envoyer à un serveur, dans l'espoir de vous retrouver heureusement avec un identifiant de session existant et de voler une session aléatoire?
La seule chose qui me vient à l'esprit est le fait que le nombre de possibilités est assez important. Cependant, ce n'est pas infini - j'imagine qu'un propriétaire de botnet malveillant pouvait facilement faire des millions d'essais en peu de temps.
Comment puis-je, en tant que développeur d'applications, d'éviter cela?
Merci !
La réponse par tim à propos de l'entropie est parfaite sur le thème de la force brute sessionId.
Mais noter, il existe des moyens plus faciles à voler la session. Par exemple, si vous émettez la session via HTTPS (authentification) mais rebondir à HTTP, maintenant votre session est exposé en texte clair. Tout ce qui passe au-dessus HTTP peut être supposé est crié à haute voix et ouverte pour tous ceux qui écoute sur la ligne.
Une attaque ciblée peut inciter un utilisateur à cliquer sur un URL HTTP sur le site cible et les espionne attaquant jusqu'à ce que l'utilisateur clique sur l'URL et envoyer la session sur HTTP. c'est pourquoi vous devez définir le drapeau sécurisé pour votre session pour vous assurer qu'il n'est pas envoyé à moins que HTTPS.
Vous pouvez lier la session IP, mais notez que de nombreux utilisateurs peuvent partager la même adresse IP si elles sont derrière un NAT. Il est donc pas vraiment une excellente solution de sécurité.
Même si vous avez votre session entière sur SSL, les vulnérabilités encore dans le navigateur peut permettre de voler la session; Cross Site Scripting peut voler la session. Pour être sûr, vous devez résoudre tous ces problèmes, mais à la fin de la journée, supposons que la session pourrait être volées, et penser maintenant quoi?
Est jeton de synchronisation Une solution avancée pour détournement d'avion session; De cette façon, chaque fois que le navigateur client fait une requête HTTP au serveur, le serveur renvoie une nouvelle valeur de champ de formulaire aléatoire jeton assez complexe pour le client comme caché, et le client doit soumettre cette valeur dans la requête suivante en tant que la valeur de la forme cachée. Si le client soumet la session à droite (par exemple, volé le cookie), mais ne pas le plus récent jeton de synchronisation, alors il y a quelque chose de mal. Cette solution empêche également la falsification de requêtes cross-site. Si vous êtes sur SSL, cette solution ne peut être rompu par l'homme au milieu soit.
Non, si l'identifiant de la session est assez long et a suffisamment d'entropie.
[.____] Si cela vous concerne toujours, vous pouvez signer de manière cryptographique des cookies à l'aide d'une clé secrète.
[.____] mais la signature des cookies n'aura pas beaucoup d'effet:
Comme si la signature est de 128 bits de long et que le cookie est également de 128 bits, puis
[.____] Le cookie peut être pensé à un biscuits de 256 bits longs.