jeudi 10 janvier 2008

Web/Ajax javascript securité

Je m'excuse auprès des non informaticiens car ce billet est technique. J'essaierai de faire un billet simplifiant ce sujet ultérieurement.

Les vidéos de la Google Web Toolkit conference ont été publiées et si vous portez un intérêt à la sécurité sur le Web, je vous conseille de visualiser celle de Billy Hoffman.
Avant cet exercice, vous pouvez ouvrir la présentation ici et noter les bonnes pratiques page 20 et en fin de document.
Les experts en sécurité diront ne rien voir de nouveau car cette présentation ne se concentre pas sur un type d'attaque, mais c'est d'ailleurs tout son intérêt. Le présentateur oriente ici le sujet sur le navigateur web et démontre grâce à de multiples exemples comment il est possible de jouer en triturant le code javascript avec l'extension Firefox Firebug. Le message à retenir est " le code présent dans le navigateur peut à tout moment être changé ". La partie où doit se trouver la sécurité de votre application est le serveur.



Voici quelques notes personnelles et des liens supplémentaires :
- Toujours utiliser des requêtes SQL avec paramètres validés (Channel9 pour MS) ou plus simplement valider les entrées. Voir The Unexpected SQL Injection.
- Aussi incroyable que ceci puisse paraître, beaucoup de développeurs pensent que leurs applications sont sécurisées s'ils protégent l'accès au code javascript dans le navigateur. Remarque : Le navigateur est un outil, il suffit d'utiliser un autre outil ou simplement lire les données transmises pour lire ce code.
- Allez sur le Web et faites une recherche sur "Javascript obfuscation". Vous vous rendrez compte du nombre de développeurs persuadés que l'on peut brouiller le code pour qu'il ne soit pas lisible (obfuquer). Remarque : Si le navigateur peut le faire alors n'importe qui peut reproduire le scénario et le déobfusquer.
- Bonne démonstration JSON et une astuce pour éviter certaines attaques.

Si vous n'avez pas le temps de visualisez tous ces documents alors parcourez la version ci-dessous qui est pratiquement identique.



Dans le répertoire sécurité des clients Web, notez qu'il existe une page sur la sécurité des players flash sur le site de Adobe.

Sources :
Wikipedia : Billy Hoffman
Voicesthatmatter : Les documents de présentations
Voicesthatmatter : Les vidéos des présentations
Firebug : extension de debug javascript
Channel9 MSDN : Microsoft Security Wiki
webappsec.org : The Unexpected SQL Injection
JSON : JavaScript Object Notation
Alex's Corner : More Javascript Overloading
Adobe : Sécurité des players flash

Aucun commentaire: