Autenticação e segurança

Author profile photo
Equipe Quickex
29 de agosto de 2025
~2 min de leitura

Autenticação e segurança

API v2: chave, lista de IP confiáveis, HMAC

Modelo de acesso. Todas as requisições à API v2 são executadas em nome de um par de chaves
publicKey/secretKey.
As chaves são criadas na conta pessoal ou via v1 (/api/v1/users/generate-api-key).

Restrição por IP. Ao criar uma chave, especifique os endereços confiáveis em
whiteListIp.
Requisições fora dessa lista são rejeitadas.

Assinatura de cada requisição. Os cabeçalhos devem incluir:

X-Api-Public-Key — seu publicKey

X-Api-Timestamp — string de timestamp (por exemplo, milissegundos epoch)

X-Api-Signature — assinatura HMAC-SHA256 em Base64

Fórmula da assinatura

StrToSign = timestamp + body + publicKey
Signature = Base64( HMAC_SHA256(StrToSign, secretKey) )

Onde body — JSON sem espaços extras (use serialização compacta).

Exemplo (curl)

curl -X POST "https://quickex.io/api/v2/instruments/public/validate-address" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Api-Public-Key: {PUBLIC_KEY}" \
  -H "X-Api-Timestamp: {TIMESTAMP_MS}" \
  -H "X-Api-Signature: {HMAC_BASE64}" \
  -d '{"currencyTitle":"USDT","networkTitle":"TRC20","address":"..."}'

API v1: JWT/sessão

Dois caminhos de acesso. É possível a verificação manual através do suporte — solicitar acesso permanente (fornecer projeto, volumes, whitelist IP, ID de parceiro).

Autenticação JWT. Obtenha tokens através de
POST /api/v1/users/local/authenticate (campos:
email, password, browserFingerprint).
Na resposta, o servidor define cookies:
session_id, access_token, refresh_token.

Exemplo de requisição (corpo JSON)

{
  "email": "user@example.com",
  "password": "yourpassword",
  "browserFingerprint": "unique-browser-id"
}

Os tokens/cookies são usados para chamar métodos protegidos de v1 e para gerar chaves da API v2 via
/api/v1/users/generate-api-key.

Recomendações para armazenamento de chaves e tokens

Não armazenar no código/repositório. Use variáveis de ambiente ou gerenciadores de segredos (Vault, AWS Secrets Manager, GCP Secret Manager, etc.).

Separar ambientes. Chaves separadas para dev/stage/prod. Para dev — limitado
whiteListIp e permissões reduzidas.

Minimizar a superfície de ataque. Execute requisições à v2 apenas no backend, nunca gere chaves e HMAC no frontend.

Rotação regular. Reemita chaves periodicamente, exclua as não utilizadas
(/api/v1/users/list-api-key, /api/v1/users/delete-api-key).

Registro sem segredos. Não registre
secretKey, tokens ou cabeçalhos completos de autorização; registre apenas hashes/IDs e códigos de resposta.

TLS em todos os lugares. Use apenas
https. Rejeite redirecionamentos para esquemas inseguros.

Cookies seguros. Para v1, use as flags
HttpOnly, Secure; armazene tokens apenas em contêineres de sessão protegidos.

Tratamento de erros e novas tentativas. Em 429/5xx — use backoff exponencial. Verifique o corpo da resposta e a validade dos parâmetros obrigatórios.

Acesso pelo princípio do menor privilégio. Forneça chaves e tokens aos serviços estritamente onde forem necessários; não os compartilhe entre equipes/microserviços sem necessidade.

Compartilhe este artigo: