A criação de DOM Javascript / jQuery é segura até que seja adicionada ao documento?
Por favor, leia esta declaração com atenção: vamos supor antes que QUALQUER elemento seja adicionado aodocument
todos elementos @ inseguros em $ dom foram removidos. Mas eles foram criados inicialmente. Ok, vamos continuar ....
Se um texto do usuário for processado e puder ser carregado da seguinte forma:
var comment = 'I\'m a naughty person!!' +
'<script src="http://blah.com/some_naughty_javascript.js">';
var $dom = $('<div>' + comment + '</div>');
É istopor si própri perigoso de alguma forma? Meu ponto de vista é: o simples ato de criar um DOM pode injetar alguma coisa, ou é simplesmente processado e a estrutura criad
Por exemplo
var $dom = $('<script>alert("hi");</script>');
Obviamente, a mensagem oi não será exibida até ser adicionada àdocument
. Mas
Como descrito nas respostas abaixo, parece que esse método não é muito seguro, principalmente por um motivo:
var $dom = $('<img src="blah.jpg"/>')
- isso solicitará a imagem imediatamente, independentemente de o objeto ter sido adicionado ao documentIsto cria um grande problema para lidar com solicitações de ajax HTML. Por exemplo, se quisermos obter os valores das entradas do formulário:
$.ajax({
url: 'test.php',
success: function(responseHTML) {
var inputs = $(responseHTML).find('form input');
}
});
Isso involuntariamente fará com que todas as imagens sejam solicitadas pelo navegador.
Bounty é concedido a qualquer pessoa:
Quem pode fornecer uma maneira agradável e segura de lidar com solicitações de ajax sem o problema acimIdeally não fornece uma resposta regex ... ou seja, e se quiséssemos fazer$(responseHTML).find('img')
- remover tags de imagem com regex não pode ser uma opção; portanto, seria necessária uma maneira discreta de interromper o carregamento do src, mas ainda possuindo os mesmos atributos, estrutura et