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
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
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 –