Sanitização X / HTML e CSS baseada em JavaScript

Antes que todo mundo me diga que eu não devo fazer a higienização do lado do cliente (de fato, pretendo fazê-lo em um cliente, embora possa funcionar também no SSJS), deixe-me esclarecer o que estou tentando fazer.

Gostaria de algo parecido comGoogle Caja ou HTMLPurifier mas para JavaScript: uma abordagem de segurança baseada em lista de permissões que processa HTML e CSS (ainda não inseridos no DOM, é claro, o que não seria seguro, mas primeiro obtido na forma de sequência de caracteres) e depois filtra seletivamente tags ou atributos não seguros, ignorando eles ou, opcionalmente, incluindo-os como texto de escape ou permitindo que eles sejam relatados ao aplicativo para processamento adicional, idealmente em contexto. Seria legal se também pudesse reduzir qualquer JavaScript a um subconjunto seguro, como no Google Caja, mas sei que isso exigiria muit

Meu caso de uso está acessando dados XML / XHTML não confiáveis obtidos via JSONP (dados das wikis do Mediawiki antes do processamento do wiki, permitindo entrada XML / HTML bruta, mas não confiável) e permitindo que o usuário faça consultas e transformações nesses dados (XQuery, jQuery, XSLT etc.), aproveitando o HTML5 para permitir uso off-line, armazenamento do IndexedDB etc., e que podem permitir a visualização dos resultados na mesma página em que o usuário visualizou a fonte de entrada e construiu ou importou suas consulta

O usuário pode produzir qualquer saída que desejar, por isso não higienizarei o que está fazendo - se quiserem injetar JavaScript na página, terá todo o poder para eles. Mas quero proteger os usuários que desejam ter confiança de que podem adicionar código que copia com segurança sobre elementos de destino da entrada não confiável, enquanto impede que copiem entradas não segura

Isso definitivamente deve ser possível, mas estou imaginando se existem bibliotecas que já fazem iss

E se eu estiver travando a implementação sozinho (embora eu esteja curioso em ambos os casos), gostaria de ter provas sobre o uso deinnerHTML criação / adição de @ ou DOM ANTES da inserção no documento é segura em todos os aspectos. Por exemplo, eventos podem ser acionados acidentalmente se eu executeDOMParser ou contou com a análise de HTML do navegador usandoinnerHTML para adicionar HTML bruto a uma div não inserida? Eu acredito que deveria ser seguro, mas não tenho certeza se os eventos de manipulação do DOM poderiam ocorrer de alguma forma antes da inserção, que poderia ser explorad

É claro que o DOM construído precisaria ser higienizado após esse ponto, mas eu só quero verificar se consigo construir com segurança o objeto DOM para facilitar a travessia e depois me preocupar em filtrar elementos, atributos e valores de atributos indesejado

Obrigado

questionAnswers(1)

yourAnswerToTheQuestion