Have I Been Pwned 2.0 é lançado
(troyhunt.com)- 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
- Exemplo: página da violação da Ashley Madison
- As informações existentes são apresentadas de forma mais amigável para o usuário
- 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.come 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.txtque estava faltando - Também encontrou itens que nunca existiram, mostrando a necessidade de “trust, but verify”
- Foi solicitado que escrevesse um script PowerShell para rastrear
- 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.