Analisador de diferenças entre parsers de URL

Cole uma ou mais URLs (uma por linha) para detectar divergências entre o parser de URL do navegador/WHATWG e parsers antigos no estilo RFC 3986 usados em algumas linguagens de backend. Veja qual destino cada parser interpreta e por que isso pode ser um problema de segurança, não apenas de formatação.

O processamento é feito localmente no seu navegador. Seu arquivo nunca é enviado.

Como usar esta ferramenta ferramenta

  1. Cole uma URL ou um bloco com uma URL por linha; os dados não saem do navegador.
  2. Selecione ‘Analisar URLs’.
  3. Confira cada valor sinalizado: qual comportamento de análise diverge, quais parsers são afetados e por que isso importa.
  4. Use a reescrita sugerida quando disponível. Confusão com userinfo e hosts não ASCII ficam deliberadamente sem solução, pois adivinhar o host pretendido seria pior do que apontar a ambiguidade.

Premissas

Fontes e dados de referência

Metodologia

Cada URL candidata é verificada contra sete divergências independentes e documentadas entre a análise permissiva no estilo WHATWG e a análise mais estrita no estilo RFC 3986: normalização de barras invertidas, confusão entre userinfo e host, barras iniciais extras, hosts não ASCII/IDN, URLs relativas a protocolo sem esquema, espaços/caracteres de controle incorporados e espaços sem codificação. Só há reescrita quando é inequivocamente segura: normalizar barras invertidas, remover espaços excedentes, reduzir barras extras e codificar um espaço literal com porcentagem. Nunca reescreve automaticamente confusão com userinfo nem hosts não ASCII, pois não é possível saber qual host era pretendido.

Exemplo resolvido

Confusão com userinfo pelo caractere `@`

Dados de entrada: https://trusted.com@evil.com/

Resultado: O navegador interpreta tudo antes de `@` como userinfo e tudo depois como o host real: esta URL aponta para evil.com, não trusted.com. É sinalizada como erro; é um desvio clássico de código que verifica o destino por correspondência textual em vez de analisar a URL.

Barras invertidas no lugar de barras normais

Dados de entrada: https:\\example.com\path

Resultado: Navegadores normalizam barras invertidas para barras normais em esquemas especiais como https, então a URL é analisada como `https://example.com/path` no navegador. Muitos parsers fora do navegador não fazem essa normalização e podem interpretar outro host ou falhar. É sinalizada como erro e reescrita com segurança.

Barras iniciais extras

Dados de entrada: https:///example.com

Resultado: Três barras depois dos dois-pontos do esquema são tratadas de maneira inconsistente. É sinalizada como aviso e reescrita com segurança para a URL canônica `https://example.com`.

Host com aparência confiável dentro do userinfo

Dados de entrada: https://trusted.com@evil.com/

Resultado: Nesta URL, `trusted.com` é informação de usuário antes de `@`; o host é `evil.com`. Isso pode enganar verificações por substring que procuram um domínio confiável sem analisar a URL. O verificador analisa o texto e não acessa nem navega até o endereço.

Orientações práticas
Erros comuns

Perguntas frequentes

Por que confusão com userinfo é erro, mas host não ASCII é apenas aviso?

Confusão com userinfo é um desvio de segurança documentado e ativamente explorado, sem caso de uso legítimo comum com esse formato. Um host não ASCII muitas vezes é legítimo (um nome de domínio internacionalizado); o problema é a divergência entre parsers, não a suspeita sobre a URL em si.

Por que a ferramenta não abre nem normaliza a URL para verificar o host real?

A ferramenta nunca navega até uma URL colada, solicita o endereço nem o representa como link clicável. Faz apenas análise estática do texto no navegador, deliberadamente: uma ferramenta que ensina padrões de ataque por confusão de URL não deve se tornar um vetor de ataque.

Um resultado sem alertas significa que a URL é segura?

Significa que nenhuma das sete divergências específicas e documentadas verificadas foi encontrada. Não garante que seja seguro solicitar a URL nem que ela não seja maliciosa por outros motivos fora das diferenças entre parsers.

Última revisão:

Verificador de texto estático, não um segundo parser ativo: o lado estrito da RFC 3986 descreve comportamentos reais documentados, mas não executa uma biblioteca de URL de outra linguagem sobre a entrada. Também não resolve URLs relativas, segue redirecionamentos nem determina se uma URL é maliciosa além dos sete padrões indicados.

As preferências de tema e de ferramentas, além das listas de itens salvos e usados recentemente, são armazenadas somente neste navegador.