Sanitizador de Arquivos HAR
Remove tokens, cookies e dados sensíveis de arquivos HAR.
🖥 Removes cookies, auth headers, tokens, and bodies from a HAR file — entirely in your browser, so secrets never leave your machine.
Visão geral
Um arquivo HAR é o registro que o próprio navegador faz de um carregamento de
página, exportado do DevTools. É o anexo mais útil que você pode colocar em um
relatório de bug do tipo «aqui funciona», e também uma das coisas mais perigosas
que você pode colar em um rastreador de issues público. A captura de uma sessão
autenticada contém o seu cookie de sessão, o seu cabeçalho Authorization,
qualquer código OAuth que estivesse em trânsito naquele momento, todos os
formulários que você enviou e todos os corpos de resposta que o servidor
devolveu.
Esta ferramenta reescreve a captura de modo que a estrutura sobreviva e os
segredos não. Você mantém a lista de requisições, os métodos, os códigos de
status, os nomes dos cabeçalhos, os tempos e os tamanhos — tudo aquilo de que um
mantenedor precisa para raciocinar sobre o seu problema — enquanto os valores que
comprometeriam a sua conta são substituídos por [REDACTED].
Como usar
- No DevTools, abra Network, clique com o botão direito na lista de requisições e escolha Save all as HAR.
- Cole o JSON aqui (ou abra o arquivo e cole o conteúdo dele).
- Leia a contagem de campos ocultados e depois passe os olhos pela saída.
- Clique em Download para salvar
sanitized.hare anexe esse arquivo em vez do original.
O que é removido
A captura guarda o mesmo segredo em vários lugares, então a ferramenta precisa limpar todos eles. Deixar um passar é a falha que realmente importa: um arquivo que parece sanitizado é pior do que um arquivo que claramente não está, porque você vai anexá-lo sem pensar duas vezes.
- Cabeçalhos.
Cookie,Set-Cookie,Authorizatione qualquer cabeçalho cujo nome contenhatoken,secret,credential,sessionouapi-key. TambémLocation, porque um redirecionamento depois de um callback OAuth carrega o código de autorização na URL. - Arrays de cookies já interpretados. O HAR registra os cookies duas vezes —
uma como a linha de cabeçalho bruta e outra como um array
cookies[]de pares nome/valor. Todo valor desses arrays é limpo independentemente do nome, porque nome de cookie não diz para que o cookie serve (s,_sesseSIDsão todos cookies de sessão no mundo real). - Corpos de requisição. Tanto
postData.textquanto ospostData.params[]já interpretados são limpos sem olhar para os nomes dos campos. O campo de um formulário de login pode se chamarpass,otpoucvv, e nenhum deles casa com uma lista de palavras-chave que você pensaria em escrever. - Corpos de resposta. Limpos por completo. Esta é a maior fonte isolada de
divulgação acidental — uma resposta JSON de
/api/mecontém o registro inteiro do usuário. - Destinos de redirecionamento e frames WebSocket.
response.redirectURLe os_webSocketMessagesdo Chrome, cujo primeiro frame é muitas vezes o handshake de autenticação. - Endereço IP do servidor e initiator.
serverIPAddressexpõe o endereçamento interno; o_initiatordo Chrome guarda a URL completa do script que disparou a requisição, query string incluída. - Parâmetros de consulta. Qualquer parâmetro cujo nome pareça uma credencial
—
token,api_key,AWSAccessKeyId,signature,code,state,side qualquer coisa que contenhakey,secretoupassword. Parâmetros que não são segredo, comopageelang, ficam intactos para que as URLs continuem legíveis. - Títulos de página e referrers. O título de uma página muitas vezes é só a
URL, e um cabeçalho
Refererdepois de um callback OAuth carrega o código de autorização.
O que é mantido de propósito
Duas categorias ficam intactas mesmo que um filtro grosseiro por palavra-chave as pegasse, porque removê-las destrói o próprio motivo pelo qual você compartilhou o arquivo:
- Cabeçalhos de resposta CORS.
Access-Control-Allow-Origine companhia não contêm segredo nenhum, e um bug de CORS é um dos motivos mais comuns para compartilhar um HAR. Ocultar a resposta da pergunta torna a captura inútil. - Desafios de autenticação.
WWW-AuthenticateeProxy-Authenticatedescrevem qual esquema o servidor quer. Isso é uma dica, não uma credencial.
O que esta ferramenta não consegue remover
A ocultação baseada em nomes tem um limite claro, e vale saber onde ele está antes de anexar a saída a uma issue pública.
- Segredos no caminho da URL.
/reset/9f3c…e/invite/abc123são indistinguíveis de/users/42sem conhecer a rota. Os segmentos do caminho ficam intactos, porque removê-los destruiria a lista de requisições. - Tokens em cabeçalhos personalizados com nomes inofensivos. Um cabeçalho
chamado
X-Client-Idque por acaso carregue um valor assinado não casa com palavra-chave alguma. Passe os olhos pelos seus próprios nomes de cabeçalho antes de compartilhar. - Dados pessoais em parâmetros que não são segredo. Um endereço de e-mail em
?email=sobrevive, porqueemailé nome de campo e não credencial. Se isso importa ou não depende de para quem você está mandando o arquivo. - As próprias URLs. Hostnames internos, domínios de staging e caminhos de API são todos preservados e, juntos, descrevem a sua arquitetura.
A regra prática é esta: a ferramenta deixa uma captura segura para anexar a um ticket de fornecedor ou a uma issue no seu próprio rastreador. Trate «seguro para publicar na internet aberta» como um julgamento separado, que você faz lendo o arquivo.
Observações
Os valores são substituídos, e não apagados, então o formato do JSON não muda e
qualquer visualizador de HAR continua abrindo o resultado. A única exceção é
content.encoding: quando um corpo de resposta é substituído, a declaração
base64 que descrevia os bytes originais é removida, porque [REDACTED] não é
base64 e um visualizador rigoroso quebraria diante disso.
O contador informa campos limpos ou removidos, não segredos encontrados. A captura de um site estático sem cookie nenhum pode legitimamente relatar um número alto, porque todo corpo de resposta conta.
Uma entrada que não seja um HAR é rejeitada em vez de passar adiante. Uma versão
anterior desta ferramenta aceitava qualquer JSON, processava zero entradas e
relatava «0 valores sensíveis ocultados» como sucesso — devolvendo o arquivo
original com um atestado de saúde. Dizer a você que algo está seguro é o produto
inteiro aqui, então a ferramenta agora recusa qualquer coisa que não tenha um
array log.entries.
Se você só quer ler uma captura em vez de compartilhá-la, use o visualizador HAR. Ele mascara os segredos na tela, mas nunca reescreve o arquivo, porque de qualquer forma nada sai da sua máquina.