Le Google Caja HTML désinfectant , peuvent être "prêt pour le web" par incorporée dans un web worker. Toutes les variables globales introduit par le désinfectant sera contenue dans le travailleur, en plus de la transformation a lieu dans son propre thread.
Pour les navigateurs qui ne prennent pas en charge des Web workers, nous pouvons utiliser une iframe comme un environnement distinct pour le désinfectant. Timothy Chien a un polyfill qui fait exactement cela, en utilisant des iframes pour simuler Web des Travailleurs, de sorte que cette partie est fait pour nous.
La Caja de projet a une page wiki sur la façon d'utiliser Caja autonome, côté client désinfectant:
- La caisse de la source, puis de construire en cours d'exécution
ant
- Comprennent
html-sanitizer-minified.js
ou html-css-sanitizer-minified.js
dans votre page
- Appelez
html_sanitize(...)
Le travailleur script a seulement besoin de suivre ces instructions:
importScripts('html-css-sanitizer-minified.js'); // or 'html-sanitizer-minified.js'
var urlTransformer, nameIdClassTransformer;
// customize if you need to filter URLs and/or ids/names/classes
urlTransformer = nameIdClassTransformer = function(s) { return s; };
// when we receive some HTML
self.onmessage = function(event) {
// sanitize, then send the result back
postMessage(html_sanitize(event.data, urlTransformer, nameIdClassTransformer));
};
(Un peu plus de code est nécessaire pour obtenir le simworker bibliothèque de travail, mais il n'est pas important de cette discussion.)
Démo: https://dl.dropbox.com/u/291406/html-sanitize/demo.html