42 votes

Identifiant de session unique en python

Comment générer un identifiant de session unique en Python?

79voto

Sean Points 4446

Je déteste dire cela, mais aucune des autres solutions postées ici sont corrects en ce qui concerne d'être un "secure ID de session."

# pip install M2Crypto
import base64, M2Crypto
def generate_session_id(num_bytes = 16):
    return base64.b64encode(M2Crypto.m2.rand_bytes(num_bytes))

Ni uuid() ou os.urandom() sont de bons choix pour générer des Identifiants de session. Les deux peuvent générer de l' aléatoire des résultats, mais au hasard ne signifie pas qu'il est sécurisé en raison de la mauvaise entropie. Voir "Comment faire Craquer un Générateur Linéaire à Congruence" par Haldir ou du NIST ressources sur la Génération de Nombre Aléatoire. Si vous souhaitez utiliser un UUID, puis d'utiliser un UUID qui a été généré avec un bon nombre aléatoire:

import uuid, M2Crypto
uuid.UUID(bytes = M2Crypto.m2.rand_bytes(num_bytes)))
# UUID('5e85edc4-7078-d214-e773-f8caae16fe6c')

ou:

# pip install pyOpenSSL
import uuid, OpenSSL
uuid.UUID(bytes = OpenSSL.rand.bytes(16))
# UUID('c9bf635f-b0cc-d278-a2c5-01eaae654461')

M2Crypto est le meilleur OpenSSL API en Python atm comme pyOpenSSL semble être maintenue que pour soutenir des applications héritées.

27voto

Sverre Rabbelier Points 677

Vous pouvez utiliser la bibliothèque uuid comme ceci:

importer de l'uuid
mon_id = uuid.uuid1 () # ou uuid.uuid4 ()

23voto

Seun Osewa Points 3243
import os, base64
def generate_session():
    return base64.b64encode(os.urandom(16))

1voto

David Z Points 49476

Cela peut être aussi simple que de créer un nombre aléatoire. Bien sûr, vous devez stocker vos identifiants de session dans une base de données ou quelque chose de ce type et vérifier chacun de ceux que vous générez pour vous assurer qu'il ne s'agit pas d'un doublon, mais il est peu probable que ce sera le cas si les nombres sont suffisamment grands.

1voto

si28719e Points 1424

A quoi sert la session? Une application web? Vous voudrez peut-être regarder le module bécher . C'est le module par défaut pour gérer les sessions dans les pylônes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X