2 pontos por GN⁺ 2025-05-20 | Ainda não há comentários. | Compartilhar no WhatsApp
  • O rebranding do HIBP, preparado por muito tempo, entrou em produção, trazendo uma reconstrução completa do site e uma reformulação funcional em quase todas as páginas
  • A busca principal melhorou a experiência dos resultados, mas o site removeu a busca por username e número de telefone, mantendo a compatibilidade da API existente
  • As novas páginas dedicadas a cada violação tornam os resultados de busca menos complexos e separam em uma tela própria as orientações concretas de resposta que o usuário pode seguir após um incidente
  • Os recursos que exigem verificação de acesso ao e-mail foram agrupados em um dashboard baseado em Sign In, e o domain search ficou mais rápido com API JSON e filtragem no lado do cliente
  • A stack técnica foi organizada em torno de Azure, Cloudflare, .NET 9.0, Bootstrap e TypeScript, e o Google reCAPTCHA foi removido, ficando apenas o Cloudflare Turnstile

Novo site e experiência de busca

  • O novo site do Have I Been Pwned foi lançado
    • O primeiro commit do trabalho de rebranding no repositório público foi feito em fevereiro de 2024
    • A nova marca teve soft launch em março de 2025
    • Este lançamento inclui reconstrução completa do site, mudanças de funcionalidade em quase todas as páginas, adição de novos recursos e lançamento da loja de produtos
  • A caixa de busca principal mantém o recurso mais representativo do HIBP, mas muda a forma de exibir os resultados
    • Alguns usuários verão reações de celebração e animação de confetti
    • Quando uma violação é confirmada, é mostrada uma resposta vermelha mais sóbria
    • Os resultados aparecem em um timeline rolável em ordem cronológica inversa, com um resumo de cada violação
  • A busca no site deixou de oferecer suporte a username e número de telefone
    • A busca por username foi introduzida para o incidente do Snapchat em 2014
    • A busca por número de telefone foi introduzida para o incidente do Facebook em 2021
    • Esses dois tipos de dados nunca foram carregados além desses dois casos
    • É difícil vincular username a um proprietário específico, e números de telefone são complicados de interpretar por causa de diferenças de formato e notação internacional
    • Alertas por SMS têm custo muito mais alto do que por e-mail
    • Permitir esse tipo de entrada no site antigo gerou confusão e carga de suporte do tipo “por que meu número não aparece em determinada violação?”
    • Na API, o suporte continua por compatibilidade, mas é dito claramente para não esperar novos dados desse tipo

Páginas dedicadas por violação

  • A nova breach page separa em uma tela própria os detalhes de cada violação para reduzir o problema de resultados excessivamente complexos na busca principal
  • A principal mudança da página está em orientar de forma mais concreta as ações que o usuário deve tomar após uma violação
    • O foco é no que usuários afetados por uma violação precisam fazer
    • Isso também inclui direcionamento para serviços parceiros, como provedores de proteção de identidade
  • Há planos de reforçar no futuro os dados sobre violações e informações específicas por usuário
    • Se o serviço afetado oferecer 2FA, isso será mostrado de forma específica em vez de uma orientação genérica
    • Passkey também será adicionada em uma seção separada
    • Em discussões com o NCSC do Reino Unido, foi tratado um guia localizado de vazamento de dados que mostra o logotipo do NCSC e recursos de orientação relacionados para usuários do Reino Unido

Dashboard unificado e busca de domínio

  • Como os recursos que exigem confirmação de acesso ao endereço de e-mail aumentaram ao longo dos anos, eles foram unificados em um único dashboard central
    • No caso Ashley Madison de 2015, o conceito de sensitive breach foi introduzido, exigindo confirmação via recebimento de e-mail
    • Em 2019, para reduzir abuso da API, foi adicionada uma camada de autenticação à API, exigindo verificação de e-mail antes da compra de uma API key
    • Depois disso, foram adicionados o dashboard de domain search, o gerenciamento de assinaturas pagas e a consulta de stealer logs
  • O novo dashboard verifica o acesso ao endereço de e-mail por trás de um único Sign In e depois mostra os recursos relacionados
    • Reúne recursos voltados ao público geral e recursos orientados a negócios
    • Há planos de adicionar suporte a passkey no futuro para permitir login sem envio de e-mail
    • Também é citado como exemplo adequado ao dashboard o recurso de cadastrar os endereços de e-mail da família para receber alertas, mas enviar essas notificações para outro endereço
  • O domain search recebeu bastante limpeza visual e melhorias de filtragem
    • A lista de domínios verificados ficou mais organizada
    • Os resultados de busca oferecem resumos mais claros
    • Foram adicionados filtros por endereço de e-mail e a opção de “ver apenas a violação mais recente”
  • O dashboard de busca de domínio recebe JSON da API e todo o dashboard funciona como um aplicativo de página única
    • A filtragem é feita no lado do cliente sobre o JSON completo do domain search
    • Foi testado que isso funciona mesmo em domínios com mais de 250 mil endereços de e-mail comprometidos
    • Ainda assim, para dados nessa escala, é mais apropriado recebê-los via API do que rolar tudo no navegador
  • A verificação de propriedade de domínio também foi totalmente reescrita
    • A interface ficou mais limpa e simples
    • Os métodos de verificação além de e-mail ainda precisam de mais trabalho para ficarem mais fluidos

Documentação da API e loja de produtos

  • Não houve mudança na API em si
    • Esta atualização não introduz mudanças que quebram compatibilidade
    • Usuários atuais da API não terão nada quebrado
  • A documentação da API não conseguiu migrar para a nova abordagem e mantém a documentação antiga
    • No repositório GitHub do rebuild de UX, houve discussões sobre a forma de documentar a API, e o consenso geral foi OpenAPI
    • Um trabalho usando Scalar está em andamento e pode ser visto em haveibeenpwned.com/scalar
    • O Scalar oferece exemplos em várias linguagens e um executor de testes no navegador
    • Como não ficou pronto dentro do cronograma grande de lançamento, a documentação atual da API foi mantida com o estilo do novo site
    • Quando houver mais tempo, há plano de migrar para a implementação com Scalar
  • A loja de produtos do HIBP foi lançada em merch.haveibeenpwned.com
    • É operada via Teespring
    • Todos os produtos são vendidos a preço de custo, sem gerar lucro
    • Foi criada como uma iniciativa divertida para a comunidade
  • Os adesivos continuam usando a loja da Sticker Mule, porque as opções do Teespring não alcançaram a qualidade anterior da Sticker Mule
    • Também é oferecida a arte open source, para que qualquer pessoa possa imprimir onde quiser

Stack técnica e desempenho

  • O serviço original continua operando na Microsoft Azure
    • O site usa App Service
    • A maior parte da API usa Functions serverless
    • São usados SQL Azure Hyperscale, queues, blobs, tables e outros recursos de storage account
    • O código é majoritariamente em C#, com .NET 9.0 e ASP.NET MVC sobre .NET Core
  • A Cloudflare continua tendo papel importante
    • Há muito código em Workers
    • Os dados ficam em storage R2
    • São usados recursos de WAF e caching
    • Para anti-automação, usa-se apenas Cloudflare Turnstile, com remoção completa do Google reCAPTCHA
  • O front-end usa geração recente do Bootstrap, SASS e TypeScript
    • O CSS é escrito em SASS
    • O JavaScript é escrito em TypeScript
  • O desempenho do site também teve melhorias mensuráveis
    • Segundo testes do Pingdom, o tamanho da página foi reduzido em 28%
    • O número de requisições foi reduzido em 31%
    • O tempo de carregamento variou demais para afirmar uma diferença grande
    • É destacado que, mesmo após 11 anos, ainda foi possível reduzir em dois dígitos o tamanho das páginas e o número de requisições
  • Não foram adicionados elementos que possam ser vistos como carga de rastreamento ou publicidade
    • As estatísticas reais de tráfego são baseadas no tráfego que passa pelos edge nodes da Cloudflare
    • O product placement da 1Password consiste apenas em texto e imagem
    • Também não há rastreamento de cliques de saída
    • Isso torna mais difíceis as discussões de product placement com empresas de roubo de identidade que esperam métricas invasivas de rastreamento

Uso de IA no processo de desenvolvimento

  • O ChatGPT foi usado amplamente no processo de reconstrução, especialmente nos últimos dias
    • Foi usado para encontrar um ícone adequado ao heading “Index” entre os Bootstrap icons
    • O uso era algo como localizar o ícone certo entre mais de 2.000 opções em cerca de 30 segundos
  • A IA também foi usada na verificação da migração do site
    • Foi solicitado que escrevesse um script PowerShell para rastrear haveibeenpwned.com e listar URLs únicas
    • Também foi solicitado um script para verificar se os paths encontrados existiam em stage.haveibeenpwned.com
    • Isso ajudou a encontrar o arquivo security.txt que estava faltando
    • Também encontrou itens que nunca existiram, mostrando a necessidade de “trust, but verify”
  • Também foi usada para pequenas tarefas como orientação de CSS, configuração de regras da Cloudflare e peculiaridades de um web app em .NET Core
    • A taxa de acerto das respostas foi estimada em cerca de 90%
    • A avaliação é fortemente positiva, a ponto de afirmar que quem não está usando IA ativamente no desenvolvimento de software está fazendo algo errado

Lançamento e problemas com o Turnstile

  • O novo site foi colocado no ar no início da manhã de domingo, segundo o autor
    • Quase tudo correu bem, e um ou dois pequenos glitches foram corrigidos e publicados rapidamente
    • O texto foi publicado dois dias após a entrada em produção para organizar o máximo possível dos problemas primeiro
    • Nesse intervalo, mais de 12 novos releases foram publicados em um ciclo rápido de iteração
  • Até pequenas mudanças em termos de uso e política de privacidade consumiram muito tempo
    • Foi necessário refletir pequenas atualizações na forma de tratar dados e novos serviços como stealer logs
    • O trabalho com advogados consumiu várias horas e milhares de dólares
  • O Cloudflare Turnstile é uma forma de anti-automação que, ao contrário do Google reCAPTCHA, não envia tráfego para o Google
    • Pode ser implementado de forma totalmente invisível
    • No navegador, o script da Cloudflare cria o challenge, que depois é enviado com a requisição HTTP e validado no lado do servidor
    • No HIBP, isso já estava aplicado de alguma forma desde 2023
  • Em áreas como formulários de envio de e-mail, onde bloquear bots é importante, quando o Turnstile falha o usuário recebe orientação para tentar novamente ou atualizar a página
    • Muitas vezes, um segundo clique ou recarregar a página resolvia
    • Se isso não resolver, pode ser necessário considerar uma implementação mais visível do widget do Turnstile, com interação do usuário
  • O Turnstile também é usado de forma importante na página principal de busca
    • A página faz requisições assíncronas para um endpoint da API junto com o challenge token
    • Quando o challenge falhava e o endpoint do HIBP retornava HTTP 401 com Invalid Turnstile token, era necessário fazer fallback para um full page post
    • Esse fallback não funcionava no primeiro lançamento do novo site, mas depois foi corrigido
    • No full page post, é exibido um challenge gerenciado pela Cloudflare, mais intrusivo, porém mais confiável
  • Segundo estatísticas da Cloudflare, cerca de 82% dos challenges emitidos são resolvidos com sucesso
    • Entre os 18% que não são resolvidos, uma parte significativa pode ser de bots bloqueados exatamente como planejado pelo Turnstile
    • É provável que as requisições de pessoas reais bloqueadas estejam em uma faixa de um dígito percentual, e ainda é preciso continuar buscando formas de reduzir esse número

Ainda não há comentários.

Ainda não há comentários.