Qual é a profundidade máxima dos documentos HTML na prática?

Eu quero permitir a incorporação de HTML, mas evito o DoS devido a documentos HTML profundamente aninhados que travam alguns navegadores. Gostaria de poder acomodar 99,9% dos documentos, mas rejeitarei aqueles que se aninham muito profundament

Dois questões estreitamente relacionadas:

Quais limites de profundidade do documento estão embutidos nos navegadores? Por exemplo. o navegador X falha ao analisar ou não cria documentos com profundidade> algum limite. Existem estatísticas de profundidade de documentos para documentos disponíveis na Web? Existe um site com estatísticas da Web que explique que uma porcentagem de documentos reais na Web possui profundidades menores que algum valor.

profundidade do documento é definida como 1 + o número máximo de percursos principais necessários para alcançar a raiz do documento a partir de qualquer nó em um documento. Por exemplo, em

<html>                   <!-- 1 -->
  <body>                 <!-- 2 -->
    <div>                <!-- 3 -->
      <table>            <!-- 4 -->
        <tbody>          <!-- 5 -->
          <tr>           <!-- 6 -->
            <td>         <!-- 7 -->
              Foo        <!-- 8 -->

a profundidade máxima é 8, pois o nó de texto "Foo" possui 8 ancestrais. O ancestral aqui é interpretado de maneira não estrita, ou seja, cada nó é seu próprio ancestral e seu próprio descendent

Óper possui algumas estatísticas de aninhamento de tabela, que sugerem que 99,99% dos documentos têm uma profundidade de aninhamento de tabela inferior a 22, mas esses dados não contêm toda a profundidade do document

EDITAR

Se as pessoas quiserem criticar a biblioteca de higienização de HTML, em vez de responder a essa pergunta, por favor.http: //code.google.com/p/owasp-java-html-sanitizer/wiki/AttackReviewGroundRule explica como encontrar o código, onde encontrar uma mesa de teste que permite testar ataques e como relatar problema

EDITAR

Perguntei a Adam Barth, e ele gentilmente me indicou o código do kit da web que lida com iss

@Webkit, pelo menos, impõe esse limite. Quando um treebuilder écriad recebe um limite de árvore que é configurável:

m_treeBuilder(HTMLTreeBuilder::create(this, document, reportErrors, usePreHTML5ParserQuirks(document), maximumDOMTreeDepth**(document)))

e é testado pelo tampa-aninhamento-bloco teste

questionAnswers(2)

yourAnswerToTheQuestion