URLs contêm mais estrutura do que parecem
Um destino inclui um esquema, host, porta opcional, caminho, consulta e fragmento. Tratá-la como uma string arbitrária torna a validação inconsistente e pode introduzir um comportamento inseguro ou surpreendente.
Analise o valor completo uma vez com um analisador de URL testado e, em seguida, aplique regras ao resultado estruturado.
Os fragmentos não pertencem à solicitação do servidor
Um navegador mantém o fragmento após o sinal de hash e não o envia ao servidor de destino. Um serviço de redirecionamento pode preservá-lo para navegação do cliente, mas uma plataforma pode remover fragmentos intencionalmente quando seu contrato os trata como estado de UI local.
Qualquer política escolhida deve ser visível e testada. A codificação silenciosa do hash em um caminho altera o destino e é um bug comum de normalização.
Destinos privados precisam de cuidados especiais
Hosts de loopback, privados, locais de link e internos podem se tornar perigosos quando uma plataforma também busca visualizações ou executa verificações de integridade. Rejeitá-los antes do armazenamento simplifica o limite de segurança.
A resolução de nome de host precisa de verificações adicionais em um buscador isolado porque um nome de host de aparência pública pode posteriormente ser resolvido para um endereço privado. A validação de string por si só não é uma defesa SSRF completa.