[Silverlight] Et si on parlait un peu sécurité ?
Dans le développement d'applications, la sécurité est un point important qu'il ne faut surtout pas négliger. C'est d'autant plus vrai dans le cas des applications Web: l'intégrité des données doit-être préservée.
Avec l'arrivée de Silverlight, il serait intéressant de voir ce qu'il en ait d'un point de vue sécurité. Et c'est ce que nous allons tenter de voir au travers de ce post 
La première chose à savoir, c'est que toutes les applications Silverlight sont sécurisées. En effet, ces applications sont exécutées dans une "sandbox" (bac à sable) qui permet de restreindre les ressources auxquelles votre application a accès. En effet, n'oubliez pas que Silverlight est un plugin qui s'exécute sur le poste client. Par conséquent, on pourrait très bien penser pouvoir avoir accès à certaines ressources, telle que la base de registre, etc... De part ce "bac à sable", l'exécution des application Silverlight se fait dans un environnement très minimal/restreint: il est donc impossible d'accéder à la base de registre, au système de fichiers, etc.....
Vous pourriez vous demander alors l'intérêt de Silverlight si l'on ne peut pas avoir accès au système de fichiers. Comment réussir à sauvegarder des paramètres utilisateurs (hormis sans les mettre sur le serveur) si l'on ne peut pas avoir accès à un emplacement où stocker ces paramètres ?
Fort heureusement, Silvrlight vous permet d'utiliser le "stockage isolé" (Isolated Storage). Tout comme dans la version disponible avec le framework .NET, il s'agit de stores (emplacements) qui sont isolés (on ne sait donc jamais vraiment où ils sont situés). Pour simplifier, on peut faire l'analogie avec des dossiers virtuels. Chaque store de Silverlight est limité à 1 Mb (n'essayez donc pas d'y mettre des DivX
) mais ils possèdent une fonctionnalité qui est intéressante: chaque store est "mult-navigateur". Ainsi, si vous utilisez un store avec Internet Explorer, vous serez à même de re-travailler avec le même store (pour la même application) dans Firefox ou Safari 
Pour en savoir plus sur l'Isolated Storage avec Silverlight, je vous recommande ce petit tutoriel: http://www.silverlight.net/QuickStarts/IsoStore/StoreData.aspx
Nous allons maintenant nous attarder un moment sur le contrôle OpenFileDialog disponible avec Silverlight. Tout comme dans la version "classique", ce contrôle est utilisé pour permettre aux utilisateurs de sélectionner des fichiers, sur le poste client. Vous devriez déjà hurler vis-à-vis de ce que je vous ai dit plus haut ("Silverlight ne permet pas d'accéder au système de fichiers"): vous ne pouvez pas, par programmation, accéder à un répertoire du système (hors ceux du stockage isolé), cela représente un risque trop important (si vous pouvez accéder à un répertoire, il y a de fortes chances que vous puissiez l'effacer, etc...). Cependant, afficher une boite de dialogue de type "Parcourir" ne représente aucun risque: on ne fait qu'afficher le contenu du PC. Et quand bien même l'utilisateur clique sur OK, étant donné que le plugin ne peut pas accéder au fichier, il ne se passera rien.
De plus, les fichiers que vous sélectionnez avec ce contrôle ne sont accessibles qu'en lecture (si vous sélectionnez le fichier contenant vos mot de passes, c'est vous qui serez en cause, pas l'application
)
Si vous souhaitez copier les fichiers que vous avez sélectionné, vous allez devoir passer par un Web Service qui va se charger de:
- récupérer le contenu des fichiers (n'oublier pas que ceux-cci sont accessibles en lecture)
- les transmettre au serveur (via Web Service par exemple)
- une fois sur le serveur, une copie locale du fichier est créée, avec le contenu que l'on aura récupéré.
Pour bien comprendre ce mécanisme, je vous recommande la session de Stefan Schackow lors du Mix07:
DEV10 - Extending the Browser Programming Model with Silverlight
Ainsi que ce tutoriel: http://www.silverlight.net/QuickStarts/Other/Upload.aspx
Et voila pour une liste, non exhaustive, de la sécurité autour de Silverlight: j'espère que cela vous sera utile 
A+
Technorati tags:
Silverlight del.icio.us tags:
Silverlight
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :