2010-05-03 6 views
14

Je viens de commencer à chercher OAuth et ça a l'air vraiment sympa. J'ai maintenant oauth with twitter working à ruby.Correct façon de stocker en toute sécurité jeton/secret/etc de OAuth?

Maintenant, je me demande, quel est le moyen sûr recommandé de stocker les réponses dans ma base de données locale et une session?

  • Que dois-je stocker?
  • Où dois-je le stocker?

Cet exemple twitter-oauth-with-rails app stores une user.id à la session, et la table utilisateur a le token et secret. Mais il semble que ce serait vraiment facile de pirater et d'obtenir le secret en passant juste un tas d'identifiants d'utilisateurs de test, non?

Répondre

1

Si vous développez une application Web, vous pouvez ajouter un champ hidden à la forme l'utilisateur soumet, avec une valeur semblable hachage calculée avec les user.id si les gars du mal ne peut pas changer cette valeur et juste « deviner » pour un accès jeton

6

les jetons sont inutiles sans la clé du consommateur/secret de votre application Twitter comme ils ne sont pas les mêmes pour chaque application, mais dépendent de la clé du consommateur/secret.

Pour obtenir une variable de session, vous devez deviner l'identifiant de session qui est pas si facile à accomplir. Si vous voulez vous pouvez stocker ces jetons dans la session mais je suggère de stocker les jetons d'utilisateur dans votre base de données avec toutes les autres données d'utilisateur afin que votre session contienne seulement les données pour identifier l'utilisateur dans votre système.

Mise à jour: Je ne sais pas si je comprends bien ce que vous entendez par accéder aux jetons de la base de données en devinant un ID.

Avez-vous une authentification en place afin que les utilisateurs doivent entrer des informations d'identification pour accéder à leurs données? Vous devez stocker les jetons de la même manière que vous stockez l'adresse e-mail ou le mot de passe des utilisateurs et seuls les utilisateurs authentifiés doivent pouvoir y accéder.

+0

merci, cela est utile. J'essaye juste de saisir vraiment la meilleure manière de faire ceci parce que beaucoup de personnes ont dit de ne jamais stocker toutes les données confidentielles dans la session. mais il semblait qu'il soit possible d'accéder à un modèle d'utilisateur à partir de la base de données par identifiant s'il était dans la session, si le développeur laissait quelque chose exposé. quelque chose comme ca. –

+0

Les données de session ne sont pas accessibles à l'utilisateur car elles ne connaissent que l'ID de session mais pas ce qui est stocké dans la session. La seule façon d'accéder aux données de session pour un autre utilisateur est d'utiliser le détournement de session, mais il ne s'agit pas seulement de remplacer un petit nombre par un autre. Voir ici: http://en.wikipedia.org/wiki/Session_hijacking –

+0

Si vous y réfléchissez, alors il n'y a pas d'autre moyen de dire à quel utilisateur appartient la session car vous ne pouvez utiliser que des cookies et c'est juste ce que font les sessions mais plus sécurisé que de simplement stocker l'ID de l'utilisateur dans le cookie. –

Questions connexes