Veuillez lire attentivement cet avis: supposons avant TOUT des éléments sont ajoutés à l' document
tous les éléments non sécuritaires dans $dom ont été supprimés. Mais ils ont été initialement créé. Ok, nous allons continuer....
Si un morceau de texte utilisateur est traitée et peut possiblité être chargé comme suit:
var comment = 'I\'m a naughty person!!' +
'<script src="http://blah.com/some_naughty_javascript.js">';
var $dom = $('<div>' + comment + '</div>');
Est-ce par lui-même dangereux en aucune façon? Mon point étant, peut juste le simple fait de la création d'un DOM en quelque sorte injecter quoi que ce soit, ou est-il tout simplement traitée, et la structure est créée?
Par exemple:
var $dom = $('<script>alert("hi");</script>');
Évidemment, le message de salut ne fait pas apparaître jusqu'à ce qu'il est ajouté à l' document
. Mais:
- Peut-tag ou rien créé de cette manière-il être dangereux?
- Toute les fonctions en javascript/jquery "regardez" pour les éléments créés de cette manière et d'agir AVANT qu'il a été dépouillé de mauvais éléments et les mettre sur le document?
Bounty Modifier
Donc, comme indiqué dans les réponses ci-dessous, il semble que cette méthode n'est pas très sûr, surtout pour une raison:
-
var $dom = $('<img src="blah.jpg"/>')
-- cela demande de l'image tout de suite, peu importe si l'objet a été ajouté au document.
Cela crée un problème majeur pour traiter HTML requêtes ajax. Par exemple, si nous voulions obtenir les valeurs des entrées de la forme:
$.ajax({
url: 'test.php',
success: function(responseHTML) {
var inputs = $(responseHTML).find('form input');
}
});
Ce sera involontairement la cause de toutes les images pour être demandées par le navigateur.
Bounty est attribué à toute personne:
- Qui peut fournir une belle, sûre façon de traiter avec des requêtes ajax sans le problème ci-dessus.
- Idéalement ne pas fournir une regex de réponse... c'est à dire que si nous ne voulions
$(responseHTML).find('img')
-- suppression de balises d'image avec la regex ne peut pas être une option, donc, d'une manière discrète seraient nécessaires pour arrêter la src à partir de chargement, mais toujours les mêmes caractéristiques, de la structure, etc.