Je possède ce code source en Ruby:Où stock-clé utilisée pour la génération de jetons dans le courrier électronique de confirmation
Je suis en train de construire une classe à peu près semblable. Je possède ce point final:
@register_endpoint.route('/', methods=['POST'])
def process_signup_form():
form = InitializeAccountForm(request.form)
if form.validate_on_submit():
email = form.email.data
first_name = form.first_name.data
# TODO add exception if the email doesn't land
response = verify_email_account(first_name, email)
return render_template("auth/register.html", form=form)
else:
return render_template("auth/register.html", form=form)
Ce envoyer un email avec un lien, y compris un jeton généré en utilisant cette classe:
class SecureMessage:
def __init__(self):
self.key = nacl.utils.random(nacl.secret.SecretBox.KEY_SIZE)
def encrypt(self, message):
if message:
box = nacl.secret.SecretBox(self.key)
cypher_text = box.encrypt(bytes(message, "utf-8"))
encoded_cypher_text = base64.urlsafe_b64encode(cypher_text)
return encoded_cypher_text
else:
return None
def decrypt(self, token64):
if token64:
token = base64.urlsafe_b64decode(token64)
box = nacl.secret.SecretBox(self.key)
decrypted_token = box.decrypt(token)
return decrypted_token
else:
return None
Et j'avoir un autre point de terminaison qui est supposé déchiffrer le jeton généré précédemment:
@register_endpoint.route('/<string:token>', methods=['GET'])
def display_register_form(token):
error = None
decrypted_token = SecureMessage().decrypt(token)
form = RegisterAccountForm(decrypted_token)
return render_template("auth/register.html", form=form, error=error)
Je ne sais pas vraiment où stocker ma clé dans mon environnement flacon, ni où la clé est le magasin dans le code Ruby.
Pourriez-vous me dire quelle est la meilleure et la plus sûre façon de stocker ma clé?
EDIT:
je le flux suivant:
- L'inscription utilisateur en complétant: prenom, email sur/register_account
- Je Crypter via une clé symétrique JSON: { » first_name ": prénom," email ": email} (il me donne un jeton URL_SAFE
- J'envoie à l'utilisateur par email un lien/registre/
- Lorsque l'utilisateur clique sur l'e-mail, nous récupérons le jeton dans l'URL décryptez-le en utilisant la même clé symétrique précédente et pré-remplissez le champ prénom et e-mail, puis l'utilisateur peut remplir les champs comme mot de passe etc.
- Nous stocker l'utilisateur
Ma question est comment puis-je stocker la clé symétrique utilisée dans mon processus de chiffrement/déchiffrement?
Avec store, vous voulez dire une couche de persistance ou seulement dans la session de la requête en cours? –
@LuisOrduz I modifier ma question pour être moire spécifique – mel