Documentação do Mercado Livre
Confira todas as informações necessárias sobre as APIs Mercado Livre.
Documentação do
Autenticação segura
- Acesso não autorizado.
- Usurpação de identidade.
- Roubo de credenciais.
- Acesso a dados de usuários do Mercado Livre.
É por isso que recomendamos as seguintes práticas a serem consideradas para que seu sistema de autenticação seja seguro e robusto:
Política de senhas seguras
- Complexidade: maiúsculas, minúsculas, números e símbolos.
- Comprimento: mínimo de 12 caracteres.
- Verificação contra listas (Denylist): rejeitar senhas comuns conhecidas ou que sigam padrões relacionados ao usuário.
- O armazenamento seguro é fundamental: usar HASH com Argon2 ou bcrypt (nunca texto simples nem MD5/SHA1).
Uma senha fraca é a porta de entrada mais fácil para um atacante. Compare estes exemplos para avaliar sua política atual:
Exemplo de senhas:
❌ SENHAS FRACAS (não permitir):
123456 -> Muito simples password -> Palavra comum admin123 -> Padrão previsível empresa2026 -> Relacionada ao contexto qwerty -> Padrão de teclado
✅ SENHAS FORTES (exigir):
Mínimo 12 caracteres + Maiúsculas: A-Z + Minúsculas: a-z + Números: 0-9 + Símbolos: !@#$%^&* Exemplo válido: "K9#mPx$vL2@nQ4"
Armazenamento de senhas
❌ INCORRETO:
Texto simples: password = "MiContraseña123" MD5 (quebrado): password = "5f4dcc3b5aa765d61d8327deb882cf99" -> Decifrado em segundos com tabelas rainbow SHA1 (fraco): password = "cbfdac6008f9cab4083784cbd1874f76618d2a97" -> Também vulnerável a tabelas rainbow
✅ CORRETO:
bcrypt: password = "$2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/X4.oUy..." -> Inclui salt automático -> Projetado para ser lento (resistente a força bruta) Argon2 (recomendado): password = "$argon2id$v=19$m=65536,t=3,p=4$..." -> Resistente a ataques com GPU
Fluxo de recuperação de senha
- Links de uso único e expiração curta.
- Impossibilidade de reutilização de tokens.
- Proteção contra força bruta.
- Integração com segundo fator de autenticação (2FA) para validação de identidade do usuário.
Como verificar?
- Revise o código da sua aplicação na funcionalidade de cadastro e troca de senha.
- Busque a função de hash utilizada.
Se encontrar:
| Resultado | Avaliação |
|---|---|
bcrypt.hash() ou argon2.hash() |
✅ Seguro |
hashlib.md5() ou hashlib.sha1() |
❌ Inseguro, alterar o mais rápido possível. |
| Senha armazenada sem hash | ❌ Crítico, alterar imediatamente |
Autenticação multifator (MFA)
Recomenda-se que os seguintes tipos de usuários tenham MFA:
- Administradores (obrigatório).
- Operadores com acesso a funcionalidades sensíveis (altamente recomendado).
- Usuários regulares (recomendado para ações importantes).
As seguintes operações são consideradas críticas e devem ser protegidas com MFA:
Acesso administrativo e gestão de contas:
- Login inicial, especialmente em painéis de controle (backoffice) do integrador.
- Troca de credenciais.
- Gestão de funções e permissões.
- Operações sobre vendas que gerem uma mudança importante.
- Gestão de dados sensíveis ou informações de identificação pessoal (PII).
- Mudanças críticas no negócio (gestão de publicações, alterações de preços, estoque).
Por que é crucial? Veja um exemplo:
FLUXO DE AUTENTICACAO: SEGURANÇA COM E SEM MFA SEM MFA (INSEGURO) 1. Atacante obtém a senha --> 2. Faz login --> 3. ACESSO COMPLETO ❌ (Risco crítico - Conta comprometida) --------------------------------------------------- COM MFA (RECOMENDADO) 1. Atacante obtém a senha --> 2. Tenta fazer login --> 3. Sistema solicita Código MFA --> 4. ACESSO NEGADO ✅ (Atacante NÃO tem o (Ataque bloqueado) dispositivo/app)
Proteção contra ataques de força bruta
É por isso que ter os seguintes controles pode prevenir que isso aconteça:
- Limites de tentativas: máximo de 5 tentativas falhas por conta.
- Política de bloqueio temporário: 15 - 30 minutos após exceder as tentativas.
- CAPTCHA: exibir desde o início e após 3 tentativas falhas.
- Notificação via e-mail alertando o usuário sobre tentativas de login falhas e bem-sucedidas, com a localização de onde foram feitas as tentativas, com horário e dispositivo.
Veja como se comporta um sistema vulnerável vs. um protegido frente a ataques de força bruta:
❌ SEM PROTEÇÃO:
Atacante: Tentativa 1: admin / 123456 --> ❌ Incorreto Tentativa 2: admin / password --> ❌ Incorreto Tentativa 3: admin / admin123 --> ❌ Incorreto ... (continua automaticamente) Tentativa 10.000: admin / @Dm1n2026! --> ✅ Correto! --------------------------------------------------- Tempo total: ~5 minutos com ferramenta automatizada ☹️ Resultado: Atacante tem acesso
✅ COM PROTEÇÃO:
Atacante: Tentativa 1: admin / 123456 --> Incorreto Tentativa 2: admin / password --> Incorreto Tentativa 3: admin / admin123 --> Incorreto + CAPTCHA aparece Tentativa 4: admin / qwerty --> Incorreto + CAPTCHA Tentativa 5: admin / letmein --> Incorreto ⛔ CONTA BLOQUEADA POR 30 MINUTOS [mail] E-mail enviado ao usuário: "Detectamos tentativas..." --------------------------------------------------- ⏳ Tempo para 10.000 tentativas: ~1000 horas ✅ Resultado: Atacante não pode continuar + Usuário alertado
Como verificar se estamos protegidos?
- Tente fazer login com senha incorreta 6 ou mais vezes.
- Observe o que acontece:
| Comportamento | Resultado |
|---|---|
| Posso continuar tentando sem limite | ❌ Sem proteção |
| CAPTCHA aparece após 3 tentativas | ✅ Proteção básica |
| Conta bloqueada temporariamente | ✅ Proteção forte |
| Recebo notificação de tentativas falhas | ✅ Proteção + alertas |
Gestão de sessões
- Tokens de sessão seguros: usar tokens gerados com funções criptográficas seguras.
- Timeout por inatividade: encerrar a sessão após um tempo considerado (a ser definido pelo integrador).
- Timeout absoluto: encerramento máximo de sessão de 8 a 12 horas (ou que represente o tempo de trabalho diário de um usuário na plataforma para solicitar re-login).
- Regeneração de ID de sessão: sempre criar um novo ID de sessão após login e inativar as demais sessões ativas.
- Logout seguro: invalidar a sessão no servidor e permitir encerrar todas as sessões ativas.
Uso de cookies de sessão
Caso utilize cookies para sessões, procure manter ativos os atributos Secure, HttpOnly e SameSite. Esses mecanismos garantem que os cookies não sejam acessíveis por terceiros sem autorização.
Compare sua implementação atual de cookies com estes cenários:
❌ INCORRETO - Cookie inseguro:
Set-Cookie: session=abc123
Problemas:
- Pode ser roubado por um Javascript malicioso.
- Pode ser enviado pelo protocolo inseguro HTTP (sem criptografia).
- Pode ser enviado a outros sites maliciosos (CSRF).
✅ CORRETO - Cookie seguro:
Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Lax Atributos: - Secure: Somente enviado por HTTPS - HttpOnly: Não acessível via JavaScript - SameSite=Lax: Protege contra CSRF
Como verificar os cookies do meu site?
- Abra a aplicação no navegador.
- Pressione F12 ou clique com o botão direito e inspecionar.
- Vá à seção Application > Cookies.
- Revise o cookie de sessão:
| Atributo | Deve estar |
|---|---|
| Secure | ✓ |
| HttpOnly | ✓ |
| SameSite | Lax ou Strict |
Referências
- OWASP Authentication Cheat Sheet: boas práticas de autenticação: senhas, MFA, sessões, entre outros.
- OWASP Session Management Cheat Sheet: gestão completa de sessões, cookies, timeouts entre outros.
- NIST SP 800-63B: Digital Identity Guidelines: padrão oficial de senhas e MFA.
- OWASP Blocking Brute Force Attacks: guia específico de proteção contra força bruta.
- CWE-287: Improper Authentication: categorização de todos os problemas de autenticação.
- CAPTCHA: mecanismo de proteção frente a ataques automatizados.
Glossário
| Termo | Significado |
|---|---|
| Autenticação | Verificar a identidade de um usuário (confirmar que é quem diz ser) |
| MFA / 2FA | Autenticação multifator / de dois fatores. Requer algo que você sabe (senha) + algo que você tem (celular) ou algo que você é (impressão digital). |
| TOTP | Time-based One-Time Password. Código de 6 dígitos que muda a cada 30 segundos (Google Authenticator, Authy) |
| Força bruta | Ataque que testa todas as combinações possíveis de senhas até encontrar a correta |
| Hardcodear | Escrever credenciais diretamente no código-fonte (má prática) |
| Rate limiting | Limitar quantas tentativas de login são permitidas por minuto/hora para frear ataques |
| CAPTCHA | Teste para verificar que o usuário é humano, não um bot automatizado |
| Hash de senha | Transformação irreversível da senha para armazená-la de forma segura |
| Salt | Valor aleatório adicionado à senha antes de aplicar o hash para prevenir ataques de dicionário |
Próximo: Controle de acesso e autorização.