2010-09-05 4 views
1

La question que je vais poser est juste parce que je suis curieux. Je pense que je fais la bonne chose, mais je veux m'assurer que c'est effectivement la bonne chose à faire. Il s'agit de hashing.Ce type de vérification est-il sécurisé?

Le site que je suis en train de construire comporte plusieurs composants Ajax-ed. Tout d'abord, les utilisateurs qui ne sont pas connectés ne peuvent pas utiliser ces composants. Deuxièmement, les utilisateurs qui sont connectés peuvent seulement faire leurs demandes dans leur propre nom. C'est assez facile à forger, parce que j'envoie un identifiant d'utilisateur.

Ma méthode de vérification est la suivante. Chaque utilisateur a une colonne dans la base de données qui contient des informations aléatoires, comme une chaîne aléatoire de 8 caractères. À côté de chaque requête Ajax effectuée par un utilisateur, cette chaîne aléatoire est envoyée sous la forme d'une chaîne hachée. Lorsque la requête Ajax est reçue par le serveur, ce hachage est mis en correspondance avec la table utilisateur pour s'assurer que l'ID et le hachage sont un couple valide. Si oui, la demande est valide. La chaîne aléatoire 'secret' ne pénètre jamais dans le domaine utilisateur et n'est pas facile à deviner, ce qui signifie que le hachage ne peut jamais être généré par l'utilisateur. Est-ce que ce genre de sécurisation d'une demande est sûr? Y a-t-il des inconvénients? Et serait-il préférable d'utiliser du sel? D'un autre côté, ce genre de vérification m'intéresse vraiment. J'ai suivi un cours en design d'interaction. "Nous" avons le principe de "la connaissance dans le monde et la connaissance dans la tête". Hashing utilise vraiment cette technique pour transférer des méta-données de la «tête» vers le «monde» (et vice versa). Le chef et le monde ont tous deux leurs méthodes de comparaison et de décryptage des métadonnées, rendant ainsi impossible l'usurpation d'une requête. Tant que le monde ne sait pas ce que la tête sait.

Eh bien, cela dit, j'aimerais savoir si mes demandes sont (relativement) sécuritaires. Merci d'avance!

Reinder

Répondre

0

Oui sous réserve de quelques réserves.

1) Si le hachage est envoyé en clair, il est sujet à usurpation. Un attaquant qui intercepte le hachage peut maintenant usurper l'identité de l'utilisateur valide. Pour une sécurité réelle, vous devez sécuriser le canal (HTTPS).

2) Assurez-vous d'utiliser un hachage sécurisé cryptographiquement existant. N'essayez pas de rouler les vôtres. Je recommanderais de rester loin de MD5. Étant donné qu'il s'agit d'une nouvelle situation et qu'il existe des implémentations SHA1, il y a peu de raisons d'utiliser MD5.

Questions connexes