2010-01-15 5 views
1

J'ai un frontend Flex se connectant via RemoteObject au Zend Amf de Zend Framework. C'est mon seul moyen de transporter des données entre la couche client (Flex) et les couches application et persistance (LAMP avec Zend Framework). Voici quelques façons que je peux aborder la sécurité sont les suivantes:Implémentation Zend AMF et sécurité du protocole AMF

  1. Je peux répondre à TLS en utilisant mx.messaging.channels.SecureAMFChannel dans mon dossier des services-config.xml et assurer lecteur flash est chargé dans une enveloppe HTTPS et est en fait en utilisant HTTPS puisque le protocole AMF est superposé sur HTTP
  2. RemoteObject a une méthode setCredentials avec laquelle je peux passer des en-têtes d'authentification AMF pour protéger les données liées à l'utilisateur. En supposant que TLS était réellement sécurisé, je peux exposer des méthodes sur le point de terminaison après l'authentification de l'utilisateur.
  3. Je peux protéger contre les scripts inter-site et d'autres FLASH vulnérabilités avec un ensemble correctement en place crossdomain.xml

La question que j'est de savoir comment protéger mon point final contre un autre consommateur AMF? Par exemple, s'il y avait un autre consommateur AMF (pas Flash donc pas lié par crossdomain.xml et la sécurité de sandbox Flash) autre que mon client Flex qui connaissait mon endpoint, qu'est-ce qui l'empêcherait d'utiliser les méthodes exposées par le terminal? Pour autant que je sache, j'ai essentiellement besoin d'un moyen d'authentifier mon application Flex par rapport à mon point de terminaison Zend Amf. Après l'authentification du consommateur AMF, j'ai certains des mécanismes de sécurité que j'ai mentionnés ci-dessus pour protéger certaines données (comme l'authentification de l'utilisateur). Je ne peux pas intégrer une sorte de mécanisme d'authentification dans mon swf Flex parce que le swf est vulnérable à la décompilation (le swf ne peut pas être approuvé). Alors que les données sensibles sont protégées via l'authentification de l'utilisateur, les données non protégées sont rarement publiques, mais autant que je sache, elles sont totalement ouvertes à la consommation publique.

Répondre

0

Vous ne pouvez empêcher quiconque d'envoyer des demandes HTTP arbitraires à votre point de terminaison. Si votre application Flex authentifie les utilisateurs par rapport au serveur et que le serveur ne traite que les données sensibles si la demande contient des informations d'identification/session appropriées, tout va bien. Ce que vous ne pouvez pas faire est d'authentifier l'utilisateur et de stocker uniquement dans le client que l'utilisateur est authentifié. HTTP étant un protocole sans état, le serveur doit pouvoir autoriser chaque requête individuellement. C'est la même chose avec les sites "réguliers" et AJAX.

0

Le client AMF ne peut pas savoir qui les a appelés à moins qu'une sorte d'authentification ne soit fournie. Toute requête HTTP envoyée par Flex peut être émulée par des moyens non-Flex, et comme vous l'avez noté correctement, toute clé incorporée peut être extraite. Il n'y a donc pas de solution générique pour cela, bien que vous puissiez probablement travailler sur quelque chose si vous avez donné à vos clients des certificats pour la connexion HTTPS et que le serveur vérifie les certificats clients.