Resumo

  • A RFC 5147 define posições e intervalos de caracteres ou linhas para entidades MIME text/plain.
  • O fragmento é processado localmente depois da recuperação e não participa da resolução feita pelo servidor.
  • Uma posição começa em zero e representa uma fronteira sem comprimento, não um trecho citado.
  • Caracteres são contados depois da decodificação; bytes, pontos de código e grafemas visuais podem divergir.
  • Cada término de linha reconhecido conta como um caractere, independentemente de CRLF, LF, CR ou outra forma.
  • Posições além do tamanho convergem para o fim do documento sem confirmar que o alvo original sobreviveu.
  • Sintaxe inválida e intervalos invertidos devem ser ignorados, sem correção por adivinhação.
  • length e md5 são verificações opcionais sobre a entidade após remover codificações de transporte.
  • O cliente pode ignorar verificações; conflito de charset pode impedir seu uso ou tornar a transcodificação incerta.
  • MD5 detecta parte da deriva acidental, mas não oferece assinatura, identidade ou resistência moderna a colisões.
  • Exibir apenas o fragmento pode ocultar exceções, letras miúdas e a origem de segurança do material.
  • Decisões relevantes precisam de recibos separados de revisão, bytes, decodificação, contexto, emissor e autoridade.

Um parâmetro não é uma execução

O erro da plataforma foi ler a sintaxe como prova de comportamento. O URI continha md5=...; logo, o painel concluiu que o conteúdo fora conferido. Mas a RFC 5147 diz que clientes não são obrigados a implementar verificações de integridade e podem ignorá-las por completo.

Isso cria três estados que um produto deve separar. A verificação pode estar ausente, pode ser reconhecida e coincidir, ou pode ser reconhecida e falhar. “O documento abriu” não informa qual ocorreu. Sem telemetria do cliente, a presença do parâmetro é apenas intenção do autor do link.

O princípio vale além de MD5. Uma função declarada em uma especificação não prova adoção. Uma interface que aceita a cadeia não prova que interpretou seu significado. Running code deve ser observado no ponto em que a decisão depende dele.

A parte após # fica no cliente

Fragmentos URI são interpretados após a representação ser recuperada. Para text/plain, o tipo de mídia seleciona a gramática da RFC 5147. O servidor não recebe o fragmento como pedido de validação do trecho.

Esse desenho permite adoção incremental. Um programa antigo abre o arquivo completo, embora não localize a linha. Para o usuário, a página parece disponível. Para um sistema de evidência, a seleção falhou.

Também não basta consultar logs do servidor. Eles podem comprovar a entrega de uma representação, mas não o charset efetivo, a contagem local, o tratamento de linha, a verificação de integridade ou o enquadramento visual. A cadeia precisa de recibos no lado de origem e no lado de leitura.

Coordenadas nascem depois da decodificação

A RFC combina caractere ou linha com posição ou intervalo. A posição zero vem antes do primeiro elemento. Uma posição sozinha tem comprimento zero; um intervalo vai de um limite ao outro.

char= não conta octetos. UTF-8 usa quantidades variáveis de bytes; UTF-16 tem outras regras; uma marca de ordem de bytes inicial não entra na contagem. Um sinal percebido como uma letra pode ser pré-composto ou formado por base e diacrítico separado.

Uma migração de arquivo pode conservar a aparência e alterar todas as posições posteriores. Por isso charset declarado, charset usado, normalização e hash da entidade decodificada devem fazer parte do recibo.

Finais de linha impõem outra escolha. CRLF é a convenção de mensagens da Internet, mas LF, CR, NEL e outras sequências aparecem em protocolos e sistemas locais. Cada final reconhecido conta como um caractere. Se dois clientes reconhecem conjuntos diferentes, a mesma cadeia pode apontar para limites diferentes.

A regra do fim mascara truncamentos

Quando um valor excede o comprimento real, ele identifica a última posição. Essa regra produz resultado determinístico, mas não afirma que o conteúdo procurado existe.

Depois de um truncamento, um link para a linha 500 pode levar ao rodapé de um arquivo de 70 linhas. Um monitor que procura apenas exceções chamará isso de sucesso. A convergência ao fim deve ser uma condição explícita e impeditiva em uso probatório.

Intervalos abertos também variam com o documento. Sem início, abrangem desde o começo; sem fim, seguem até o término. Uma versão posterior pode aumentar o material selecionado sem alterar o URI.

Intervalos invertidos e erros de sintaxe seguem disciplina diferente: devem ser ignorados e não podem ser consertados por suposição. A interface precisa dizer que o fragmento foi rejeitado, pois mostrar o arquivo inteiro silenciosamente confunde recuperação com localização.

A comparação tem objeto e pré-processamento específicos

length é descrito como controle muito fraco. md5 usa a representação binária da entidade MIME depois de retirar codificações de conteúdo e de transferência. Isso evita que compressão de transporte, por si só, defina outro objeto.

O charset pode acompanhar a verificação. Se o valor declarado não coincide com a entidade recuperada, o cliente não deve aplicar o controle diretamente. Pode transcoder e depois conferir, mas a especificação adverte que caracteres podem ser perdidos ou normalizados.

Mesmo uma coincidência perfeita tem escopo estreito. Ela relaciona a entidade observada à impressão digital esperada. Não identifica quem criou o documento, não demonstra que a versão está vigente e não concede poder de decisão.

A RFC 6151 atualizou o entendimento de MD5: não é prudente quando resistência a colisões é necessária e não é aceitável para assinaturas digitais. No contexto legado da RFC 5147, seu lugar é como sinal de mudança acidental, acompanhado por mecanismo moderno de procedência autenticada.

Sem tipo de mídia, até a gramática é inferida

line= e char= não são universais. Aplicam-se quando a representação é text/plain. Alguns esquemas e ambientes não entregam tipo explícito; o agente usa heurística. A RFC chama esse processamento de inerentemente pouco confiável.

Uma extensão .txt não basta. Um URI file: pode abrir uma cópia com convenção local de linhas. FTP pode omitir metadados que HTTP forneceria. O sistema deve registrar o tipo declarado, o tipo efetivo e o motivo de qualquer inferência.

O registro IANA confirma a associação normativa entre text/plain e a RFC 5147. Ele não mede suporte em navegadores, frequência de alertas ou conformidade de um produto. Atribuição documental não é telemetria operacional.

Um recorte autêntico pode ser desonesto

A seção de segurança prevê que clientes diferentes mostrem conteúdos diferentes. Uma inclusão pode exibir apenas a parte selecionada, ocultando cláusulas próximas, ou retirar um sinal de confiança de seu domínio original.

Não é necessário adulterar o arquivo. Basta controlar a moldura. Autenticidade do documento, precisão do intervalo e honestidade da apresentação são propriedades separadas.

Um recibo reproduzível deve guardar URI completo, instante, validadores, tipo de mídia, charset, hash decodificado, política de linhas, fragmento, versão do cliente, resultado da seleção, texto e contexto. Assinatura, papel institucional do emissor e política aplicável entram em registros independentes.

Fontes

  1. RFC 5147, HTML
  2. RFC 5147, texto
  3. Registro do RFC Editor
  4. Registro no IETF Datatracker
  5. Histórico do documento
  6. Busca de errata da RFC 5147
  7. RFC 6838: especificações de tipos de mídia
  8. RFC 2046: tipos de mídia MIME
  9. RFC 3986: sintaxe genérica de URI
  10. RFC 3987: identificadores internacionalizados
  11. RFC 3629: UTF-8
  12. RFC 1321: MD5
  13. RFC 6151: segurança do MD5
  14. RFC 9110: semântica HTTP
  15. RFC 8089: esquema URI file
  16. Registro IANA de tipos de mídia
  17. W3C Media Fragments URI 1.0
  18. Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption
  19. On Reality Layers, Symbolic Power, and Why Clarity Feels So Hostile
  20. Running-Code Primacy