60 votes

Quelle est la différence entre les cookies signés et cryptés dans Rails?

La documentation de l' ActionDispatch::Cookies donne presque identiques, les descriptions des deux signé des cookies et chiffré des cookies. Il semble que les deux utilisent l' secrets.secret_key_base pour prévenir côté client de la falsification. http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

Signé Cookies

Ensembles signé un cookie, ce qui empêche les utilisateurs de la falsification de sa valeur. Le cookie est signé par votre application secrets.secret_key_basede la valeur. Il peut être lu à l'aide de la signature de la méthode de cookies.signed[:name]

cookies.signed[:user_id] = current_user.id

Chiffré cookies

Définit un cookie crypté de la valeur avant de l'envoyer au client qui empêcher les utilisateurs de la lecture et l'altération de sa valeur. Le cookie est signé par votre application secrets.secret_key_basede la valeur. Il peut être lu à l'aide de la chiffrés méthode cookies.encrypted[:name]

cookies.encrypted[:discount] = 45

Ma question est: Quelle est la différence entre les deux?

Quand vous voulez utiliser l'un plutôt que l'autre?

88voto

Brian Points 2600

C'est subtil, mais la réponse est dans la documentation fournie. Signé cookies seulement garde contre les manipulations, tout en crypté cookies garde contre la lecture et de la falsification.

Plus précisément, signé cookies appel ActiveSupport::MessageVerifier ajouter un digest (généré à l'aide d' secret_key_base) pour le cookie. Si la valeur du cookie est modifié, le digérer ne correspondent plus, et sans connaître la valeur de secret_key_base, le témoin ne peut pas être signé. La valeur du cookie est simplement encodé en base64, cependant, et peut être lu par quiconque.

Chiffré des témoins appelés ActiveSupport::MessageEncryptor de en fait chiffrer la valeur du cookie avant de générer le digérer. Semblable à signé des cookies, si la valeur du cookie est modifié le digérer ne correspondent plus, mais en outre la valeur du cookie ne peut pas être déchiffré sans l' secret_key_base.

Lorsque vous souhaitez utiliser chiffré rapport signé des cookies, il descend à la sensibilité des informations que vous stockez dans le cookie. Si vous souhaitez protéger contre est quelqu'un de modifier le cookie, puis connectez-vous - mais si vous avez également besoin de conserver les données secrètes, de les chiffrer.

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