Cada pedido para um endpoint personalizado é assinado com o segredo do seu endpoint. Verifique a assinatura antes de confiar no corpo.
Como é assinado
- A assinatura é um HMAC-SHA256 do corpo bruto do pedido, com a chave do seu segredo de assinatura.
- É enviada como
X-Studio-Signature: sha256=<hex digest>. - Os segredos começam com
whsec_. Encontre o seu em Signing secret na página do endpoint.
Node.js
import { createHmac, timingSafeEqual } from "node:crypto"
export function verify(rawBody: string, header: string, secret: string) {
const expected = `sha256=${createHmac("sha256", secret).update(rawBody).digest("hex")}`
const a = Buffer.from(header)
const b = Buffer.from(expected)
return a.length === b.length && timingSafeEqual(a, b)
}
Python
import hashlib, hmac
def verify(raw_body: bytes, header: str, secret: str) -> bool:
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(header, expected)
Erros comuns
- Faça o hash dos bytes exatos que recebeu. Analisar o JSON e serializá-lo novamente altera os bytes, por isso a assinatura não vai corresponder.
- Use uma comparação em tempo constante, como nos exemplos acima, em vez de
==. - Depois de Rotate secret, atualize o seu servidor imediatamente. O segredo antigo deixa de funcionar.
Destinos de chat, como o Slack, recebem em vez disso uma mensagem formatada e não são assinados.
Isso foi útil?
Publique posts alinhados à sua marca em minutos
Voltar à documentaçãoConteúdo de IA, agendamento, interação e um pacote completo de marketing — grátis para começar.
Comece grátis









