Importance de la session de la clé secrète dans l'Express framework web
Je suis assez confus par l'importance d'une session secret. Je suis les sauts dans le développement web avec l'Express et le Nœud, et en ce moment, je suis en train de mettre en œuvre une connexion simple. Le code ci-dessous est tiré de la des séances d'exemple dans l'Express.
//Required by session() middleware
//pass the secret for signed cookies
//(required by session())
app.use(express.cookieParser('keyboard cat'));
//Populates req.session
app.use(express.session());
Il utilise "keyboard cat" comme une séance secrète. Beaucoup de choses que je ai regardé autour séance secrets me recommander de changer pour quelque chose de personnalisé. J'ai maintenant 3 questions spécifiques à ce sujet.
- Pourquoi n'ai-je pas vu ça avant, quand je travaillais avec PHP?
- Qu'est-ce que la session secrète utilisée pour exactement?
- Disons que j'ai changer la clé de session. Mon code est open source. Ne pas changer ce être un peu redondant dans ce cas? Je ne vois pas demander à l'utilisateur d'une clé personnalisée en option.
- Je pensais de la génération aléatoire UUID pour remplir la clé. Sont-il des problèmes avec ça? (en termes de sécurité)
- Je pense que la réponse est à côté de l'essentiel, qui est de savoir si la
secret
est de faire des séances plus sécurisé. Je vous recommandons de visiter le security.stackexchange.com/questions/92122/... pour une discussion plus approfondie (pas seulement le haut voté réponse est pertinente). - J'ai trouvé ce lien pour être très instructif. Seriez-vous prêt à ajouter votre commentaire est une réponse?
Vous devez vous connecter pour publier un commentaire.
Je pense que le point principal est raté dans les autres réponses, qui est de savoir si la
secret
paramètre est de faire de la gestion de session la plus sécurisée. il est discuté de bien dans cette Sécurité.StackExchange question: Pourquoi est-il insécurité pour stocker l'ID de session dans un cookie directement?Je recommande de le lire (et pas seulement le haut voté réponse est pertinente).
Essayer de résumer: il ne réduira pas segnificantly les chances d'une session en cours deviner et détourné dans le cas où le Id de session sont de grands nombres aléatoires, mais il sera bien évidemment aider grandement si le Id de session sont personnalisés comme l'incrémentation des Id, ce qui est possible dans ExpressJS.
.env
fichier avec https://npmjs.org/package/habitat, et assurez-vous que ces fichiers ne jamais toucher votre référentiel (svn/git exclusion/ignore), de sorte que vos données secrètes reste secret."I didn't think I needed a secret, but the voices in my head told me Express needed one"
.Comment j'utilise les sessions:
.fichier env (toujours dans mon .gitignore fichier de sorte qu'il n'est jamais arrivé sur mon public de titres):
app.js:
Que CSRF peu s'assure que les demandes de page sont à venir à partir de votre propre site, pas de roulage dans les demandes ou les intègre dans les sites d'autres personnes. http://expressjs.com/api.html#csrf pour plus d'infos à ce sujet.
$_SESSION
, consultez sa documentation sur php.net, et Node.js n'utilise que de l': individuel des cadres, construit sur le haut de Node.js, peuvent ajouter leur propre gestion de session, regarder comment ils le font en leurs de la documentation". PHP ne peut pas le faire en mémoire de serveur de gestion de session côté, car de fonctionnement de PHP: il est demandé d'exécuter un script par un processus pérenne comme IIS/Apache/etc, c'sorties de données, puis il se termine. Node.js d'autre part, est la persistance des processus sur lequel le logiciel serveur est construit.secret
est de faire des séances plus sécurisé. Je vous recommandons de visiter le security.stackexchange.com/questions/92122/... pour une discussion plus approfondie (pas seulement le haut voté réponse est pertinente).Ma confusion était entre côté serveur sessions et côté client sessions. Avant aujourd'hui, je n'avais pas connue du côté client. Une explication claire de la différence est trouvée ci-dessous.
Pourquoi CherryPy session n'a pas besoin d'une clé secrète?
Penser à du côté serveur, le modèle, j'ai été très confus où le chiffrement serait nécessaire dans les sessions.