Monthly Archives: décembre 2007

FlexSpy 1.2

Grosse mise à jour de FlexSpy. La principale nouveauté de cette version 1.2, c’est la possibilité d’éditer les valeurs des propriétés et des styles des composants. J’ai également grandement amélioré l’affichage des valeurs des propriétés et des styles.

Nouveauté FlexSpy 1.2
Nouveauté FlexSpy 1.2
Nouveauté FlexSpy 1.2

FlexSpy démo (right-click pour voir les sources)

Télécharger FlexSpy-1.2.zip (sources + swc)

Pour toute remarque concernant FlexSpy, n’hesitez pas à rajouter un commentaire à ce billet. Si vous rencontrez des bugs, ou bien voulez contribuer à ce projet, vous pouvez vous rendre sur la page dédié à FlexSpy sur Google code.

Pour ajouter FlexSpy à votre application:

1. Dezippez le contenu de FlexSpy-1.2.zip dans le répertoire de votre choix (ex: C:workFlexSpy)
2. Dans FlexBuilder, ouvrez la fenêtre de propriétés de votre projet (Project menu > Properties)
3. Dans la partie gauche de la fenêtre de propriétés, sélectionnez Flex Library Build Path, puis l’onglet Library path dans la partie droite
4. Cliquez sur le bouton Add SWC…
5. Sélectionnez le fichier FlexSpy.swc dans le répertoire que vous avez choisi à l’étape 1 (ex: C:workFlexSpybinFlexSpy.swc) et cliquez sur OK pour fermer la fenêtre.
6. Ensuite, ajoutez un bouton qui appelle la méthode FlexSpy.show() dans votre application ainsi que l’import qui va bien… compilez votre projet et voilà ! Alternativement, vous pouvez également enregistrer un raccourcis clavier via la méthode FlexSpy.registerKey(…).

Mettez du sel dans vos mots de passe

Il y a encore quelques mois, je pensais que stocker l’empreinte (hash) d’un mot de passe était à peu près suffisant pour lui garantir une certaine sécurité. Je pensais naïvement qu’un mot de passe haché avec un algorithme reconnu comme MD5 ou SHA-1 demandait plusieurs mois de calculs intensif pour être cracké. J’avais tort…

Retour en arrière pour bien comprendre. Le hachage d’un mot de passe consiste à passer une chaine de caractères au travers d’un algorithme qui va retourner un nombre: l’empreinte (hash) de cette chaine.

Les algorithmes utilisés pour calculer les empreintes, comme SHA-1, sont unidirectionnels (injectifs), c’est à dire qu’il n’y a pas de formule pour faire l’opposé de ce qu’ils font. En pratique, il faut plusieurs mois ou années de calculs pour trouver le mot de passe à partir de l’empreinte.

Les algorithmes sont également déterministes. C’est à dire qu’à chaque fois qu’on demande à un algorithme de hachage de calculer l’empreinte d’une chaine donnée (« motdepasse » par exemple), il retourne toujours la même valeur (940c0f…9bb813).

Enfin, ces algorithmes sont très susceptibles au changement: Une simple variation dans la valeur d’entrée et la valeur de sortie n’a plus rien à voir. Comparez par exemple, le résultat de SHA-1 sur la chaine « motdepassd », pourtant très proche de « motdepasse »:

Donc, un site Web qui se respecte – lorsqu’un visiteur s’inscrit et donne son mot de passe – prend ce mot de passe et en calcule l’empreinte. C’est cette empreinte qui est stockée par le site (et pas le mot de passe lui-même!!). Ensuite lorsque ce visiteur revient et s’authentifie, il saisit son mot de passe, le site Web calcule l’empreinte du mot de passe saisi et compare cette empreinte avec celle qu’il a stockée. Si les deux empreintes sont identiques… bingo… l’utilisateur a saisi le bon mot de passe.

Mon monde était merveilleux, mes mots de passe quasiment inviolables… c’était il y a encore quelques mois. Et puis j’ai découvert l’existence des tables arc-en-ciel (Rainbow Tables). Vous avez besoin de trouver le mot de passe correspondant à l’empreinte « d93e1203d93058cdc255e072221091201466fc3f »? Pas de problème, allez sur le site http://passcracking.com/, entrez l’empreinte (sans les guillemets) et voyez le résultat s’afficher dans la seconde!!

En simplifiant à l’extrême les Rainbow Tables, ce sont simplement les précalculs de toutes les empreintes d’un jeu de caractère donnée. Il existe par exemple des Rainbow Tables pour les mots de passe de 4 à 8 caractères alphanumériques.

Supposons maintenant qu’une personne mal intentionnée accède à la base de donnée stockant les informations utilisateurs de votre site Web. Cette base contient les identifiants et empreintes des mots de passe de vos utilisateurs. L’attaquant peut donc procéder à une attaque par Rainbow Table en comparant toutes les empreintes de votre site avec celles contenues dans les Rainbow Tables. Il trouvera ainsi le mot de passe de tous vos utilisateurs qui ont utilisé un mot de passe composé de 4 a 8 caractères alphanumériques.

Pour se prémunir contre ce genre d’attaques, il suffit de rajouter du sel lors du calcul de l’empreinte. Kesako le sel? C’est simplement une chaine complémentaire qui sera combinée au mot de passe pour compliquer la tache des attaquants. Le premier avantage du sel, c’est que cela va allonger de manière artificielle la longueur du mot de passe. Ensuite, on met généralement des caractères exotiques dans le sel pour que les Rainbow Tables calculés sur des mots de passe ne contenant que des caractères alphanumériques ne marchent plus.

Enfin, pour éviter que l’attaquant ne génère une Rainbow Table avec tous les mots de passe contenant 6 à 8 caractères alphanumériques puis se terminant par notre sel, il faut que le sel soit dépendant de l’utilisateur… On va donc prendre comme sel, par exemple les 4 premières lettres de l’identifiant de l’utilisateur.

Ainsi on évitera que les mots de passe que l’on aura stockés ne soient trop facilement crackables via une attaque par Rainbow Tables.

Ne me rappelez pas mon mot de passe!

Je me suis récemment enregistré auprès du site d’écoute musicale you.dj. Lors de l’enregistrement le site demande, comme il est de coutume de le faire, de fournir un nom d’utilisateur, un mot de passe et une adresse email. Je tape mon nom d’utilisateur, un mot de passe et hop je peux commencer à créer mes playlists et écouter la musique que j’aime.

Mot de passe

Pourtant, quelques minutes plus tard, je recois le mail suivant:

Bienvenue sur You.dj,

You.dj est un lecteur de musique en ligne où vous pouvez écouter toutes les chansons que les membres envoient.
Vous pouvez vous aussi envoyer de la musique, pour cela, rendez-vous dans le lecteur de musique de You.dj, onglet ‘Envoyer ma musique’ et suivez ensuite les instructions.

Rappel de vos identifiants pour vous connectez à You.dj:
– identifiant : aranud1976
– mot de passe : motdepasse

Bonne écoute

Arg… mais pourquoi tu m’envoies mon mot de passe par mail en clair?  Est-ce que après avoir tapé le code de ma carte bleue au distributeur à billet, le distributeur affiche l’écran suivant?

Bienvenue à la BNP,

Vous avez demandé 50 euros.

Rappel du votre code de carte: 6791

Lorsque je confie un mot de passe à un site, je m’attend à ce qu’il en prenne soin. A savoir, qu’il ne le diffuse pas en clair sur internet (et tout le monde sait que les emails circulent en clair), mais également qu’il le stocke de manière sécurisé.

Et la seule manière pour un site de stocker un mot de passe de manière sécurisé, c’est de ne pas le stocker du tout !! Cela veut dire qu’il faut stocker non pas le mot de passe mais une empreinte du mot de passe (hash en anglais). Si la fonction de hachage qui est utilisée pour calculer l’empreinte d’un mot de passe est correctement choisie et appliquée, alors retrouver le mot de passe est impossible car cela nécessiterait des calculs trop long (plusieurs milliers d’années).

Or certains site proposent de vous redonner votre mot de passe. Par exemple, ils vous demandent votre adresse email et vous expédient votre mot de passe à cette adresse. Ou bien ils vous demandent la réponse à une question qui vous a été posé lors de l’inscription (quel est le nom de jeune fille de votre mère) et vous révèlent votre mot de passe. Tous ces sites ne stockent donc pas l’empreinte du mot de passe mais le mot de passe lui même. Ils stockent donc votre mot de passe de manière non sécurisé.

Un site qui stocke une empreinte de votre mot de passe, peut donc au mieux vous générer un nouveau mot de passe en cas de perte de votre mot de passe. C’est heureusement ce que font la plupart des sites :-)

Malheureusement, nous verrons dans le prochain billet que stocker l’empreinte du mot de passe n’est pas forcement suffisant.

Jusqu’où peut-on aller avec Flex?

Avant de choisir une technologie, j’essaye toujours de trouver 2 ou 3 applications qui transcendent cette technologie. Ce qui a déjà été fait est – par définition – faisable! Cela m’aide donc à situer les limites, les contours de la technologie et même si je ne sais pas tout ce qui est infaisable, je sais au moins ce qui est faisable.

Picnik

Pour Flex, les trois applications que j’ai trouvé sont:

  • Picnik, un éditeur d’images en ligne… d’un esthetisme et d’une ergonomie très réussis.
  • Buzzword, un traitement texte en ligne.
  • flauntR, un éditeur de photos en ligne.

Vous pouvez également en retrouver d’autres dans le Flex showcase sur flex.org.

15 bonnes raisons de choisir Adobe Flex

Bysoft cite 10 raisons pour lesquelles on aime Flex:

  1. Flex est complètement compatible avec tous les navigateurs Internet sur toutes les plate-formes. Plus de tests dans tous les sens pour être certains de la comptabilité javascript sous-jacente à Ajax
  2. Flex possède un parseur XML simple et puissant. Cela permet de manipuler très facilement des fichiers XML.
  3. Des interfaces utilisateurs d’une ergonomie parfaite ou presque : on retrouve sur un navigateur web l’ergonomie et les interfaces utilisateurs des programmes installés directement sur un ordinateur en local
  4. Une gestion de formulaire évoluée : tout est déjà dans le produit (éléments, validation, etc..)
  5. Un super natif du vidéo et du son…rien de plus simple de jouer une vidéo ou une musique dans une application Flex
  6. Une séparation complète du contenu et du contenant. Les données sont remontées dans les applications Flex directement par des flux XML, des interfaces SOAP, etc…
  7. Un environnement de développement simple et mature : flex builder, flex sdk
  8. CSS est supporté pour la gestion des skins (couleurs, polices, dégradés, etc..)
  9. Flex ce n’est pas QUE pour le web. De plus en plus d’applications d’entreprises sont bâties autour de flex (applications de salle de marchés, CRM, agenda dynamique, etc..)
  10. Flex va sortir du navigateur pour arriver sur le bureau de l’utilisateur : c’est le projet Apollo de Adobe. Flex devient alors un concurrent direct et sérieux a Java.

J’en ajouterais 5 autres:

Flex Charting

  1. Flex est gratuit (ou presque).
    Rien à payer pour déployer une application. Les Frameworks commerciaux AJAX concurrents (Backbase, Tibco, etc.) se payent aux alentours de $5000 par CPU. Pour Flex, on payera un Flex Builder ($250) par développeur, éventuellement une license de Flex Charting ($400) par serveur et LiveCycle Data Services pour parler à ses objets Java ($6000/CPU) si on est riche, sinon on prendra Granite Data Services ou des Web Services.
  2. Flex fait des beaux graphiques.
    Les moteurs de graphiques open-sources ne sont pas légions et donnent des rendus peu esthétiques (JFreeChart). Les moteurs de graphiques commerciaux sont légions et donnent pour la pluparts des rendus peu esthétiques voire moches. Seuls ChartFX, Dundas Charts, et .net Chartings arrivent à afficher des jolis graphiques, malheureusement ils sont chers.
    En comparaison, Flex Charting n’est pas très cher ($400) et affiche des graphiques vectoriels très jolis.
  3. Flex permet d’ajouter des animations à vos applications.
    Avec une facilité déconcertante, on peut créer des applications à la fois totalement bluffantes, et terriblement intuitives.
  4. Silverlight 2.0 n’est pas encore prêt.
    Microsoft a certes sorti Silverlight 1.0, mais ce dernier possède une API limitée et utilise Javascript comme langage. Silverlight 2.0 apportera une librairie de composants graphiques (boutons, listes, arbres, …) et le language C#, ce qui en fera un vrai concurrent pour Flex. Mais en attendant… Flex fait le boulot !
  5. Flex est commercialisé par Adobe.
    Macromedia a été racheté par Adobe. Pour beaucoup, notamment les grandes entreprises, c’est un gage de pérénité.

Et vous, pourquoi avez-vous ou allez-vous choisir Flex?

Quels livres pour aller plus loin en Flex?

Pour faire suite à mon post précédent sur les meilleurs livres pour démarrer en Flex, voici le résultat de mes lectures concernant des livres un peu plus pointus.

Actionscript 3.0 Cookbook

Voici un livre de recettes qui s’adresse à ceux qui connaissent un peu Flex. Ce livre répond illico-presto à des questions simples du genre « comment supprimer le 3ème caractère d’une chaine? » ou encore « comment dessiner un rectangle? ». N’espérez donc pas apprendre a programmer en Flex / ActionScript juste en lisant ce livre. D’ailleurs, ce livre se lit assez mal. C’est pas vraiment passionnant de lire les recettes les unes apres les autres.

Par contre, ce livre peut s’avérer très utile en complément d’un livre pour débuter en Flex. Il m’a été très utile lorsque j’ai commencé à écrire mes premières vraies applications en Flex.

Conclusion: Débutants en Flex, commencez par autre chose, Experts en Flex passez votre chemin et les autres, allez-y, vous y apprendrez peut-être des choses.

Essential ActionScript 3.0

La bible de l’ActionScript 3.0. Ce livre est réservé à ceux qui veulent faire des choses compliquées avec Flex, et comme les choses compliquées en Flex se font en ActionScript… il faut connaitre ce qu’il y a sous le capot de Flex. Et c’est précisément ce que ce livre vous montrera.

Pour moi le livre est composé de deux parties. La première partie traite uniquement du langage (classe, héritage, namespace, etc.) et vous permettra de faire le tour complet de ActionScript. Quand je dis complet, c’est vraiment complet. Le chapitre sur les namespaces est d’ailleurs assez ardu et j’ai du le lire plusieurs fois pour arriver à comprendre tout ce qui était écrit !!

La seconde partie est de loin la plus intéressante et traite de l’API mise à notre disposition par le Flash player. La aussi, c’est traité en profondeur. Il y a 55 pages pour expliquer en long en large et en travers XML et E4X, un chapitre pour comprendre les DisplayList, un autre pour savoir comment le Garbage Collector du Flash player fonctionne, etc.

Conclusion: Un must-have pour tous ceux qui veulent aller très loin avec Flex. Si tel n’est pas votre but, épargnez-vous la lecture (indigeste) des 850 pages de ce livre!

Foundation Actionscript Animation: Making Things Move

Si vous n’êtes pas rassasié après avoir lu Essential ActionScript 3.0, vous pouvez tenter celui-ci. A titre personnel, ce livre ne m’a ni beaucoup appris, ni beaucoup servi.

En fait ce livre vous explique comment animer des objets en ActionScript 3.0. Mais on parle ici plus d’objets Flash que de composants Flex. Concernant les animations justement, une bonne partie du livre traite de maths et de physique, à savoir trigonométrie, algèbre matricielle, vitesse, accélération, attraction, gravité, etc.

Bref, un livre qui peut vous servir si vous cherchez à faire des jeux en Flash. Si comme moi, vous développez des RIA (Rich Internet Application) en Flex, l’intérêt de ce livre est plus que limité.