Sécuriser un SWF
Par Cédric Tabin le jeudi 17.04.2008, 23:26 - Flash, Flex & co - Lien permanent
Kaleb Pederson montre dans ce billet comment faire pour empêcher qu'un SWF ne soit (trop facilement) récupéré (et décrypté) par le premier internaute pseudo-hacker venu.
Il y a quelque temps, un sujet avait été lancé sur Mediabox à propos de la sécurisation d'un jeu. Toutefois, nombres de membres s'étaient amusés à démonter les défenses que d'autres avaient mises en place.
Kaleb va un peu plus loin dans la réflexion et propose d'encrypter le fichier SWF à protéger. La procédure (traduite de son site) est la suivante :
- Encrypter le SWF (avec un cryptage clé privée / clé publique idéalement).
- Créer un SWF conteneur dans lequel le SWF encrypté sera chargé (via URLLoader).
- Décrypter le SWF et l'afficher (grâce aux excellentes API d'as3crypto).
Bien évidemment, rien n'étant parfait il se peut qu'un hacker s'intéresse vraiment à votre fichier SWF et il pourra le récupérer en faisant différentes manoeuvres. Mais cette méthode à l'avantage de compliquer suffisamment le processus pour en décourager plus d'un
Personnellement, je pense que ce n'est pas une très bonne idée de procéder de cette manière car cela signifie que ledit SWF contient probablement des informations critiques qui ne devraient pas se trouver sur le poste client. Toutefois, cela peut être utile pour protéger des graphisme ou ce genre de chose, mais en aucun cas pour stocker des données confidentielles.
Commentaires
A noter que Amayeta annonce sortir son obfuscateur AS3 pour le 30 avril ! Et vu l'efficacité d'encryptage de la version AS2, çà mérite de le tester.
++
Est-ce-que l'encryptage est si nécessaire cependant ?
Le web a bien évolué vers une fermeture des sources, a la base quasiment tout était partagé. Déjà que pour le noob venu, décompiler un swf c'est pas de la tarte (parceque même avec une appli du type FDec, il faut tout se retapper derrière), mais de plus encrypter sa source dans un conteneur, je vois là un travail supplémentaire qu'on peut enlever au workflow d'une boite de web.
'fin tout ça pour dire, j'ai jamais eut de soucis à ce que les gens regardent mes sources, parceque si ça dépendait d'un potentiel succès à se faire de l'argent ou une renommée, ce sera protégé légalement bien avant de toucher la toile
Et cependant... il est parfois nécessaire de devoir "protéger" ses sources (d'ou l'idée de l'encryptage). Bien évidemment, il faut être conscient que ce ne sera jamais sécurisé à 100% ! Mais du moins cela découragera pas mal de hackers.
Il est clair que cela donne du travail supplémentaire. Une autre solution serait d'encrypter le SWF via PHP, mais cela demande plus de ressources coté serveur et suivant comment ce n'est pas envisageable...
@++