Português (Brasil)

Kit de ferramentas de dados do desenvolvedor – perguntas

Como o kit de ferramentas lida com seus dados, quais utilitários são exatos e onde cada um deles para deliberadamente.

A versão curta

Cada utilitário aqui é executado na guia do seu navegador. Nada do que você cola é carregado ou armazenado por um servidor de aplicativos ToolAcre. A análise de todo o site é executada apenas no host de produção canônico configurado e é divulgada na Política de Privacidade; os valores colados são excluídos dos próprios eventos analíticos de ToolAcre.

As perguntas abaixo são as que decidem se você pode confiar em um determinado resultado. Onde uma utilidade é exata, isso é dito; onde se aproxima ou recusa, também diz isso.

O que acontece com o que você cola

  • Cada conversão, hash, decodificação e comparação é executada na guia do seu navegador. Nenhuma entrada é carregada, registrada ou armazenada em um servidor, porque não há nenhum servidor envolvido depois que a página é carregada.
  • Hashes vêm da implementação de criptografia da Web do próprio navegador e UUIDs de seu gerador aleatório criptograficamente seguro. Nenhum dos dois envolve uma chamada de rede.
  • Nada do que você digita é gravado no armazenamento local ou em um cookie. Recarregar a página a descarta; fechar a guia a descarta.
  • A análise de todo o site é executada apenas no host de produção canônico configurado e é divulgada na Política de Privacidade; hosts locais e de visualização recusam. Valores colados, tokens, URLs e conteúdos de arquivos são excluídos dos próprios eventos analíticos de ToolAcre. A publicidade está desativada na configuração atual.
  • Dito isto: uma chave JWT ou API é uma credencial ativa. O hábito seguro é nunca colar um em uma página da web que você não escreveu, por mais confiáveis ​​que sejam suas afirmações – incluindo esta.

Questões

Alguma coisa que eu cole foi carregada?

Nenhum upload ToolAcre o recebe. Cada conversão, hash, decodificação e comparação acontece no seu navegador. A análise de todo o site é limitada ao host de produção canônico configurado e divulgada na Política de Privacidade; valores colados, tokens, URLs e conteúdo de arquivo são excluídos dos próprios eventos analíticos de ToolAcre.

Alguma coisa é armazenada entre as visitas?

Não. O kit de ferramentas não grava nada em localStorage, sessionStorage, IndexedDB ou cookies. Recarregar a página limpa tudo o que você digitou; fechar a guia faz o mesmo. Não existe um sistema de contas, portanto não há nada para se inscrever e nada para excluir.

O base64 aqui lida com emoji e texto que não seja em inglês?

Sim, exatamente. O texto é convertido em UTF-8 bytes antes da codificação e decodificado novamente com um decodificador estrito, então emoji, CJK, árabe, marcas de combinação e ZWJ sequencia todos os bytes de ida e volta. Esta é a coisa específica que o btoa() integrado do navegador erra - ele lança alguns caracteres e silenciosamente produz bytes incorretos para outros.

Como o validador JSON encontra a posição do erro?

Com seu próprio scanner, em vez de ler a mensagem de erro do mecanismo. O texto do erro JSON do navegador é específico do mecanismo e o V8 atual omite a posição inteiramente em algumas falhas. O scanner percorre o documento e relata o primeiro deslocamento que não é válido JSON, com um motivo escrito para um humano - uma vírgula final, uma string entre aspas simples, uma string não terminada - mais a linha incorreta e um sinal de intercalação.

Quais recursos YAML são compatíveis?

Estrutura padrão YAML 1.2, lida com um esquema restrito que só pode produzir dados em formato JSON: strings, números, booleanos, nulos, sequências e mapeamentos. Tags que constroem objetos arbitrários são recusadas. Você pode escolher entre o esquema JSON (mais estrito) e o esquema Core (que também resolve valores ~ e vazios como nulos, números inteiros hexadecimais e .inf/.nan).

Por que meu arquivo YAML falha com “tag desconhecida”?

Porque ele usa uma tag personalizada ou específica do idioma, como !!js/function, !!python/object/apply, !!binary ou !!timestamp. Um carregador configurado para construí-los é um construtor de objeto arbitrário, que em vários idiomas é uma classe de bug de execução remota de código. Esta ferramenta os recusa intencionalmente, em vez de abrir uma exceção.

Os hashes estão corretos?

Eles são calculados pela implementação de criptografia da Web do próprio navegador, e o conjunto de testes os verifica em relação aos vetores publicados - SHA-256 de "abc" é ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad, e os vetores SHA-1, SHA-384 e SHA-512 são verificados junto com ele, junto com os resumos de string vazia.

Por que SHA-1 está marcado como quebrado?

Porque é. Uma colisão prática foi publicada em 2017 (SHAttered), e colisões de prefixo escolhido — a variante que quebra assinaturas e certificados — tornaram-se acessíveis em 2020. Ele está incluído para que você possa reproduzir valores SHA-1 existentes, como ids de objetos git e assinaturas API herdadas, o que é diferente de depender dele.

De onde vêm os UUIDs?

De crypto.randomUUID() ou crypto.getRandomValues() onde randomUUID não está disponível. Ambos são o gerador criptograficamente seguro do navegador. Math.random() nunca é usado: seu estado interno pode ser recuperado a partir de uma pequena série de saídas, o que torna previsível qualquer coisa construída a partir dele. Se não existir nenhuma fonte segura, a ferramenta se recusa a gerar, em vez de fazer o downgrade silenciosamente.

O decodificador JWT verifica assinaturas?

Não. Ele decodifica o cabeçalho e a carga útil e mostra o que eles afirmam. Ele não verifica a assinatura, então nada que mostra prova que um token é autêntico, inalterado ou emitido por quem quer que seja. A verificação requer a chave do emissor e um algoritmo fixado, que pertence ao sistema que confia no token – não a uma página da web.

Posso colar um token de acesso real?

Você pode e não deve – aqui ou em qualquer outro lugar. Um token ativo é uma credencial: quem o possui pode agir como você até que expire. Esta página é decodificada localmente e não envia nada, mas essa é uma afirmação que você não pode verificar rapidamente em nenhum site, portanto, o hábito seguro expirou ou os tokens de teste. Se você já colou um em algum lugar, gire-o.

Como funciona a diferença de texto?

Ele calcula um script de edição de subsequência comum mais longa, que fornece um conjunto mínimo de adições e remoções em vez de uma comparação ingênua linha por linha. Linhas iniciais e finais idênticas são cortadas primeiro, portanto, comparar dois arquivos grandes que diferem em um local é rápido.

Por que o diff recusa entradas muito grandes?

O algoritmo LCS precisa de tempo e memória proporcionais ao produto dos dois comprimentos. Depois de alguns milhares de linhas diferentes, isso se torna uma alocação que uma guia do navegador não deveria tentar, então a ferramenta recusa claramente e sugere comparar uma região menor. Os arquivos que compartilham a maior parte de seu conteúdo são cortados primeiro e permanecem rápidos, independentemente do tamanho total.

A detecção da unidade de carimbo de data/hora é confiável?

É uma heurística documentada e nunca é silenciosa. Qualquer coisa igual ou superior a 10^11 é tratada como milissegundos, porque 10^11 segundos é o ano 5138 enquanto 10^11 milissegundos é 1973. A unidade realmente utilizada é sempre exibida com o resultado e você pode substituí-la.

O kit de ferramentas funciona offline?

Depois que a página for carregada, sim – nada do que ela faz precisa da rede. Não há service worker, portanto, o carregamento inicial ainda requer uma conexão.

Funciona em um telefone?

Sim. O layout funciona de 320 CSS pixels para cima, o texto do formulário é 16px, portanto o Safari móvel não aumenta o zoom no foco e os controles atendem ao alvo de toque mínimo de 44 pixels. Editores e resultados rolam dentro de suas próprias caixas, portanto, uma longa linha de JSON minificados nunca amplia a página.

O desinfetante do editor HTML é seguro para uso em entradas não confiáveis?

Não, e o painel diz isso. É uma lista de permissões para a saída do próprio editor: elementos e atributos fora de uma lista fixa são removidos, manipuladores de eventos não podem sobreviver porque nenhum atributo sobrevive a menos que seja listado e apenas http, https, mailto, tel, ftp e links relativos são mantidos. Isso torna seguro o que este editor emite para colar em uma página que você controla. Não é um filtro XSS de uso geral - é um tokenizador de string, não um analisador HTML5, portanto, uma carga hostil poderia, em princípio, ser analisada de maneira diferente por um navegador. A visualização é um iframe em área restrita sem scripts de permissão, portanto, nada pode ser executado lá de qualquer maneira.

Por que às vezes a calculadora chmod mostra S e T em maiúsculas?

Porque o bit especial está definido e o bit de execução correspondente não. 4755 é rwsr-xr-x, um programa setuid que pode ser executado; 4644 é rwSr--r--, um arquivo setuid que ninguém pode executar, o que quase sempre é um erro. A letra maiúscula é o sistema informando que o bit não tem nada sobre o que agir, e uma calculadora que mostrasse um s minúsculo estaria escondendo a única coisa que você precisava ver.

O conversor docker alguma vez executa o comando que colo?

Não. Ele divide a string com um tokenizador com reconhecimento de cotação e lê as partes. Não há avaliação, shell e nenhum processo filho em qualquer lugar da base de código. Crases, $(...) e ponto e vírgula permanecem caracteres literais. Qualquer sinalizador que não possa ser convertido é nomeado em um aviso visível em vez de descartado, porque um arquivo de composição que silenciosamente faz menos do que o comando de onde veio é a pior coisa que esta ferramenta pode produzir.

Por que os tempos de visualização do cron não correspondem ao meu servidor?

Normalmente o fuso horário: o cron usa a zona da máquina em que é executado, e a visualização usa a zona que você escolheu, então defina-a para a zona do seu servidor. A outra causa provável é a regra do dia — quando o dia do mês e o dia da semana são definidos, o cron é executado quando EITHER corresponde, o que é acionado com mais frequência do que a maioria das pessoas espera. O gerador avisa quando isso se aplica.

Existem anúncios ou análises?

A publicidade está desativada na configuração atual. A análise de todo o site é executada apenas no host de produção canônico configurado e é divulgada na Política de Privacidade; valores colados, tokens, URLs e conteúdo de arquivo são excluídos dos próprios eventos analíticos de ToolAcre.

Limitações

  • Tudo é executado em uma guia do navegador, portanto, cada utilitário é limitado pela memória do seu dispositivo. Cada um tem um limite de entrada explícito e recusa trabalhos superdimensionados em vez de congelamento.
  • A geração de hash e UUID requer um contexto seguro (https:// ou localhost), porque é onde os navegadores expõem o Web Crypto.
  • O decodificador JWT nunca verifica assinaturas e os tokens JWE criptografados não podem ser decodificados.
  • YAML é lido com esquemas somente de dados; documentos que dependem de tags personalizadas são recusados ​​intencionalmente.
  • A tabela de entidades HTML cobre o subconjunto prático em vez de todas as referências nomeadas 2,231 HTML5, e nomes desconhecidos são relatados em vez de adivinhados.
  • O diff compara linhas inteiras. Não há realce no nível da palavra ou no nível do caractere em uma linha alterada.
  • O sanitiser do editor HTML é uma lista de permissões para sua própria saída, não um filtro XSS de uso geral para entradas não confiáveis, e não possui imagens, tabelas ou estilos.
  • O conversor docker lida com um comando docker run por vez e nomeia cada sinalizador que ele não pode representar, em vez de descartá-lo.
  • O gerador cron lê apenas a sintaxe crontab de cinco campos e os tempos da próxima execução são uma visualização baseada nos dados de fuso horário do navegador, em vez de uma garantia sobre o seu servidor.