Adobe dans le colimateur de Microsot ?

12 Avril 2006 : Une date à retenir !http://www.informationweek.com/security/showArticle.jhtml?articleID=185300841

C'est avec stupeur que les internautes du monde entier qui surfent encore avec Internet explorer 6 découvrent depuis quelques jours que leurs pages web favorites ne réagissent plus tout à fait comme avant : Toutes les animations Flash (et d'une façon générale, tous les contrôles ActiveX) sont par défaut verrouillées au chargement de la page ! Et il faut cliquer une première fois dessus pour déclencher l'interactivité avec l'utilisateur. D'ailleurs, un texte à bulle indique clairement "cliquez ici pour activer ce contrôle".

Mais d'où cela peut-il bien venir ? Un spyware, un virus, un bug DirectX ou de carte graphique ? Pas du tout, ne reformatez pas votre ordinateur tout de suite : Il s'agit des conséquences d'une toute récente mise à jour de sécurité de Windows, merci Bill :-/.

Bon, plus sérieusement, c'est une profonde refonte dans la gestion de la sécurité de l'OS, liée aux contrôles ActiveX, qui est engagée par Microsoft, après plusieurs semaines d'annonces discrètes et de communications confidentielles auprès des développeurs. Pour information, aucun autre navigateur n'est concerné, et vous pouvez continuer de surfer normalement avec Firefox, Opera ou Safari.

Mais pourquoi tout cela ? Tout simplement parce que Microsoft, qui s'est fait récemment rappeler à l'ordre par la justice américaine à propos d'un différend qui l'oppose à Eolas, se voit obligé de revoir une copie vieille de dix ans (cf cet article). Suite à ce litige, où raison a été donnée à Eolas, Microsoft, n'a plus le droit de proposer un accès direct à ses composants ActiveX quand ils sont encapsulés dans des balises <EMBED> ou <OBJECT> dans le code HTML ! Mince alors, et dommage pour les webmasters et internautes du monde entier. La mise à jour de sécurité vient de paraitre sous le numéro 912945.

Bon, pas de panique, il existe une feinte, qui est d'ailleurs largement exposée sur MSDN : Si on n'a plus la liberté d'insérer nos ActiveX préférés dans une balise <OBJECT> directement dans le code source, rien empêche de différer l'insertion du côté du client web, au moment de l'interprétation du code HTML par le navigateur ! ;-) Et pour ce faire, la clé s'appelle Javascript. C'est simple :

  • AVANT on écrivait :<OBJECT classid="clsid: D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="900" height="100"><param name="movie" value="menu.swf"><param name="quality" value="high"><EMBED src="menu.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="900" height="100"></EMBED></OBJECT>
  • DESORMAIS, veillez à écrire par exemple : <div id="embedControlLocation"><script id="elementid" src="embedControl.js"/></div>

    Le fichier embedControl.js contenant le script suivant :

    // embedControl.jsdocument.write('<OBJECT classid='clsid: D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='900' height='100'> <param name='movie' value='menu.swf'> <param name='quality' value='high'> <EMBED src='menu.swf' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='900' height='100'></EMBED> </OBJECT>');

Ah bravo, c'est du joli ... mais ça marche ! :>>

Pour les adeptes de Flex, à noter que Adobe à publié un HOTFIX pour la version serveur 1.5 afin que le SWF généré par le MXML soit correctement encapsulé dans le HTML servi, pour ne plus interférer avec la nouvelle politique de sécurité de IE6 : http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=ace0407

Le problème devrait être traité nativement par Flex 2, enfin quand la version finale sortira enfin :-)

Bookmark and Share

Commentaires

Authentifiez vous pour commenter.