2010-09-07 10 views
2

Notre application consiste en un service Web REST s'exécutant sur App Engine et un client Flash. Nous devons nous assurer que seul notre client peut faire des demandes au service Web et éviter des situations telles que les attaques par répétition.Sécurisation d'un service Web exécuté sur App Engine

Je ne suis pas un expert en sécurité (de loin), donc je voudrais un conseil avec le régime de sécurité que je suis venu avec.

Le système utilisera un secret partagé. La même clé sera partagée par le serveur et le client. Je sais que si la clé est exposée (par exemple, en reconfigurant le client Flash), tout le système tombe en panne. Initialement, le client fait une demande de connexion au serveur. Le serveur répond avec un défi (un nombre aléatoire). Le client renvoie le résumé HMAC-SHA1 du challenge. Si le résumé correspond à celui du serveur, il renvoie l'horodatage. Le client utilisera cet horodatage dans le message (et le résumé de message - HMAC-SHA1) pour atténuer les attaques de rejeu.

Baiscally c'est ça. Est-ce que ça fait du sens? Que serait un delta temporel tolérable pour l'horodatage lorsque le serveur regarde un message (je pensais quelque part environ 30 secondes)? D'autres commentaires?

EDIT: Oh, et qu'est-ce qui ferait une bonne méthode pour générer les clés secrètes?

Merci.

Cheers, Alex

Répondre

1

Nous devons faire en sorte que seul notre client peut faire des demandes au service Web

Il n'y a qu'un seul moyen sûr de le faire - demandez à vos utilisateurs finaux pour entrer un nom d'utilisateur/mot de passe, et canal tout à travers https.

Comme vous l'avez déjà décrit, le secret partagé est inutile. Il est trivial d'extraire cela du fichier flash. Pourquoi même prendre la peine de suivre ce chemin quand vous savez qu'il est cassé?

+0

Nous pouvons toujours obscurcir/chiffrer le fichier swf. En outre, je ne suis pas sûr de savoir quel est le problème avec https sur le moteur de l'application. – Alex

+1

Obfuscation est juste un inconvénient mineur, il ne tiendra pas quelqu'un à l'écart trop longtemps. GAE prend en charge https, mais pas sur votre domaine personnalisé. J'ai entendu des rumeurs qu'ils prévoient de le soutenir sur des domaines personnalisés bientôt, mais c'est juste de la vigne. Consultez ce numéro pour plus d'informations - http://code.google.com/p/googleappengine/issues/detail?id=792 –

Questions connexes