Gerador de String Segura Personalizável
Gera strings aleatórias com classes específicas: alfa minúsculas, maiúsculas, dígitos, símbolos. Útil para senhas, tokens e códigos. Usa crypto.getRandomValues.
Strings aleatórias criptograficamente seguras
Uma string aleatória "segura" é aquela cujos bytes vêm de um CSPRNG (gerador pseudo-aleatório criptograficamente seguro), não de um PRNG estatístico como Math.random(). A diferença importa: o PRNG estatístico é rápido mas previsível a partir de poucas amostras observadas; o CSPRNG resiste a esse ataque. Em Node use crypto.randomBytes; no browser use crypto.getRandomValues; em Python use secrets.token_urlsafe; em PHP use random_bytes. Nunca implemente o seu.
Orçamento de entropia: qual tamanho usar?
Entropia em bits é log2(charset) × tamanho. Qualquer coisa usada em autenticação deve carregar pelo menos 128 bits de entropia — OWASP ASVS 2.6 e NIST SP 800-63B colocam 64 bits como piso mínimo. Referências rápidas:
- Hex (0-9, a-f): 4 bits por caractere — 32 chars = 128 bits
- Base64url (URL-safe, sem padding): ~6 bits por caractere — 22 chars = 132 bits
- Base32 Crockford (sem confusão 0/O/I/L): 5 bits por caractere — 26 chars = 130 bits
- Alfanumérico (A-Z, a-z, 0-9): ~5,95 bits por caractere — 22 chars ≈ 131 bits
Casos de uso típicos e formato
- API key: 32 chars hex (128 bits) — opaca, fácil de copiar
- Session token: 40+ chars base64url armazenado em cookie HttpOnly
- Magic link / reset de senha: 128 bits em base64url com TTL curto (15-30 min) e uso único
- CSRF token: valor de 128 bits por sessão, validado em toda requisição que muda estado
- Códigos de backup 2FA: 16 chars agrupados 4-4-4-4 para legibilidade
Armazenamento e comparação
Nunca logue um token inteiro. Trate como senha: armazene um hash SHA-256 e compare com uma função de tempo constante — crypto.timingSafeEqual no Node, secrets.compare_digest em Python, hash_equals em PHP. Um a === b ingênuo vaza o tamanho do prefixo coincidente via timing, permitindo brute force caractere a caractere. Para tokens de vida longa, adicione coluna de expiração e lista de revogação para invalidar uma chave roubada imediatamente.
Perguntas frequentes
Posso usar um token mais curto, tipo 8 caracteres? Só para coisas não-críticas como códigos de compartilhamento que expiram em minutos. Oito chars alfanuméricos dão cerca de 47 bits — brute-forçável em segundos numa GPU moderna. Qualquer coisa ligada a conta de usuário ou fluxo de dinheiro precisa passar de 128 bits.
Hex ou base64url — qual escolher? Prefira base64url para tokens que vão em URL ou header porque é mais denso (um char base64url ≈ 1,5 char hex pela mesma entropia). Hex é mais amigável para humanos lendo logs e debugando, mas ironicamente tokens não deveriam aparecer em logs.
Posso validar um token com regex primeiro? Para checks de formato (tamanho, charset), sim — corta lixo logado e ataques óbvios. Para o match de autenticação propriamente dito, não — use sempre um comparador de tempo constante depois que a regex passar. Comparação char por char vaza timing.
Com que frequência rotacionar API keys? Boa prática é suportar rotação sem torná-la obrigatória: toda chave tem timestamp de emissão e último uso, e a app expõe um endpoint de revogação. Para automação não-assistida, rotacione ao menos anualmente; para chaves em mãos de humanos, a cada mudança de equipe.
Ferramentas Relacionadas
Gerador de String Aleatória
Gere strings aleatórias customizáveis — defina alfabeto (A-Z, a-z, 0-9, hex, base32, base58, símbolos), tamanho e quantidade. Útil para tokens, IDs e fixtures. Tudo no navegador.
Gerador de Emojis Aleatórios
Gera uma sequência de emojis aleatórios — escolha tema (geral, comida, animais, esportes) e quantidade. Útil para design, mockups e mensagens.
Gerador de Coordenadas GPS
Sorteia coordenadas (latitude/longitude) dentro de uma caixa delimitadora (bbox). Útil para testes de mapas.