API de Desafios PoW
Utilize a API de Desafios em conjunto com o Widget ALTCHA para gerar e validar desafios criptográficos.
A API oferece várias vantagens em relação à verificação de desafios auto-hospedados:
- Integração simplificada com qualquer backend ou CMS.
- Medidas de segurança adicionais, como expiração de desafios e proteção contra reutilização.
- Capacidade de utilizar o Filtro de Spam diretamente do widget, permitindo a classificação de dados antes de enviá-los ao seu servidor.
- Nenhuma solicitação de API é feita a partir do seu servidor; tudo é verificado criptograficamente, reduzindo a latência e eliminando possíveis problemas de rede.
Autorização
Acesso à API exige uma Chave da API. Consulte Autorização da API.
Uso com o Widget
Para usar a API com o widget ALTCHA, configure o challengeurl
e lembre-se de incluir sua Chave da API na URL:
Ativar Filtro de Spam
A API também permite a classificação automática de dados para spam usando o Filtro de Spam. Para ativar o Filtro de Spam, adicione o atributo spamfilter
ao widget (requer versão 0.3+
):
Com o Filtro de Spam ativado, a verificação submeterá automaticamente campos de texto do formulário juntamente com endereços de e-mail detectados e retornará um resultado de classificação.
Para processar a classificação em seu site, utilize o evento serververification
do widget. Uma versão limitada da classificação também está inclusa na nova payload
enviada ao seu servidor.
:::atenção[Importante]
Usar a API da ALTCHA como challengeurl
juntamente com spamfilter
altera o processo de verificação no servidor. Consulte verificação do servidor.
:::
Verificação do Servidor
Ao usar a API da ALTCHA com spamfilter
, a payload
recebida em seu servidor tem um formato diferente da payload gerada pelo widget.
Você receberá uma string codificada em base64 contendo um objeto codificado em JSON:
Propriedades da payload
:
algorithm
- O algoritmo usado para a assinatura HMAC.signature
Assinatura HMAC dosverificationData
.verificationData
- Dados de verificação e classificação codificados por URL.time
- Carimbo de data/hora da verificação em segundos.verified
- Se a solução foi verificada com sucesso.- Com
spamfilter
ativado (veja Resposta do Filtro de Spam):classification
- Classificação do Filtro de Spam.email
- E-mail enviado.expire
- Tempo di scadenza in secondi.fields
- Matriz de nomes de campos enviados.fieldsHash
- Hash SHA dos valores dos campos.reasons
- Matriz de motivos.score
- Pontuação geral da classificação.
verified
- Se a solução foi verificada com sucesso.
Verificando a Assinatura
Para verificar se o cliente foi verificado, verifique a assinatura recebida na payload:
- Calcule um hash SHA dos
verificationData
(usando oalgorithm
). - Calcule uma assinatura HMAC com o mesmo
algorithm
, onde ahmac_key
é a parte secreta de sua Chave da API (por exemplo,csec_...
).
Exemplo de pseudocódigo usando o algoritmo SHA-256
:
A payload é considerada verificada se a assinatura calculada for igual à propriedade signature
da payload. Também é aconselhável verificar os dados enviados, conforme descrito na seção Verificando Campos abaixo.
Alternativamente, se não puder verificar a assinatura criptograficamente, utilize o Ponto de Verificação da Assinatura do Servidor.
Verificando Campos
Se você utilizar o Filtro de Spam, verificationData
incluirá propriedades adicionais: fields
e fieldsHash
. Essas propriedades permitem validar a precisão dos dados classificados. Esta etapa de verificação garante que o usuário não tenha alterado os dados enviados desde a sua validação pelo Filtro de Spam.
Para verificar o hash dos campos, concatene os valores dos campos com \n
(nova linha) e calcule o hash SHA (usando o algorithm
especificado). Por exemplo, se fields = field1,field2,field3
:
Certifique-se de que os valores estejam ordenados na ordem em que aparecem na propriedade fields
.
Os dados são considerados corretos se o hash calculado corresponder ao fieldsHash
.
Pontos de Extremidade da API
Se preferir usar a API diretamente, sem o widget, utilize os seguintes pontos de extremidade. Lembre-se de que o cabeçalho Referer
deve sempre estar presente e conter a origem (domínio) do seu site.
Criando um Novo Desafio
GET /api/v1/challenge
- Referência da API
Verificando Solução
POST /api/v1/challenge/verify
- Referência da API
Validando Assinatura do Servidor
Este ponto de extremidade serve como uma forma alternativa de verificar a assinatura do servidor recebida de /api/v1/challenge/verify
. A verificação criptográfica é recomendada.
POST /api/v1/challenge/verify_server_signature
- Referência da API