Prototype 1.6.0.rc
Billet publié le 20/08/2007, catégorisé en Ajax
La version 1.5.1 supportait les sélecteurs CSS3, cette fois la principale amélioration concerne la gestion des évènements.
La release candidate 1.6 propose les améliorations suivantes :
- La cadre de Element#oberve fait correspondre au "this" l'élement qui l'appelle automatiquement (pas besoin de binding, ou de Function#methodize).
- L'appelle à plusieurs méthodes "statiques" est désormais possible depuis les instances.
- On peut accèder à l'event.target dans tous les navigateurs.
- Element#fire permet de créer un type d'évènement dont l'identité peut être "écoutée".
- La function onload ultime a été implémentée à travers l'évènement "contentloaded".
Cette nouvelles versions apporte d'autres nouveautés parmis lesquelles voici mes préférées :
- document.viewport permet d'accéder aux dimensions et à la position de la fenêtre avec : getDimensions(), getWidth(), getHeight() et getScrollOffsets().
- Function#wrap permet d'étendre une fonction (ca doit permettre les mixins).
Il y aussi ajout de syntaxique sugar :
new Element("input", { name: "user", disabled: true }) |
$("header").setStyle("font-size: 12px; float: left; opacity: 0.5"); |
Et pour finir un exemple d'héritage bien sympathique:
1 2 3 4 5 6 7 |
// subclass that augments a method var Cat = Class.create(Animal, { eat: function($super, food) { if (food instanceof Mouse) return $super(); else return this.say("Yuk! I only eat mice."); } }); |
Sécuriser ses données Javascript
Billet publié le 19/08/2007, catégorisé en Ajax
Connaissez vous le JavaScript Hijacking? Il s'agit d'une méthode qui pirate la protection du code éxécutable par votre navigateur (localisée par nom de domaine). Le pirate crée ou profite de brèches à travers le transfert Asynchrone (XHR, IFrame ou <script>) pour récupérer des données sensibles.
Pour prévenir ce risque, de nombreuses bonnes pratiques sont à suivre, en voici quelques exemples :
- Limiter l'accès aux URL qui renvoient les données non publiques, à l'aide d'une clé pouvant reposer sur l'identifiant de session, ou un paramètre obligatoirement envoyé en POST.
- L'ajout préfixé d'un code au JSON qui doit alors être nettoyé par le client.
La version 1.5.1 de prototype a aussi apporté des améliorations notables pour y faire face :
- Codage et décodage JSON avec evalJSON(true) qui propose un paramètre sanitize pour éviter des attaques XSS (cross-site scripting, le danger de toute approche web2.0).
- Il est de plus hautement conseillé d'envoyer son JSON commenté, et avec le bon header requestHeaders: {Accept: 'application/json'},)

