Com verificar firmes de Slack (i no deshabilitar el teu endpoint)

Aprèn a verificar firmes v0 de Slack correctament, evita errors amb el raw body i timestamp, i protegeix el teu endpoint. Inclou codi Node.js i consells.

martes, 14 de julio de 2026 • 5 min de lectura • Equip Q2BSTUDIO

Verificació de signatura v0 de Slack pas a pas

Integrar Slack amb els teus sistemes interns és una de les decisions més intel·ligents per agilitzar la comunicació i automatitzar fluxos de treball. No obstant això, cada vegada que Slack envia un esdeveniment al teu servidor, qui realment es presenta a la porta del teu endpoint no sempre és de fiar. Sense una verificació de firma sòlida, qualsevol atacant podria fer-se passar per Slack, injectar comandaments maliciosos o desestabilitzar els teus processos. En Q2BSTUDIO, com a empresa especialitzada en aplicacions a mida, sabem que la seguretat en les integracions no és un luxe, sinó una necessitat. En aquest article explorem com verificar les firmes de Slack correctament i, el que és més important, com evitar deshabilitar el teu endpoint per errors comuns.

Slack utilitza un esquema de verificació anomenat v0. Cada petició legítima inclou dues capçaleres: X-Slack-Signature (amb el prefix v0= més un hash hexadecimal) i X-Slack-Request-Timestamp (un timestamp Unix en segons). El secret compartit no és un token de bot, sinó una clau de 32 caràcters hex que trobes en la configuració de la teva aplicació Slack. La màgia està en com Slack construeix la cadena signada: combina el literal v0, el timestamp de la capçalera i el cos exacte de la petició (raw body), separats per dos punts. Aplica HMAC-SHA256 amb el teu secret i obté la signatura final.

Un dels errors més freqüents que observem en auditar integracions és no respectar el raw body. Molts frameworks, com Express o Next.js, parsegen automàticament el cos de la petició (JSON o URL-encoded) i ofereixen un objecte. Si re-encodes aquest objecte a string per verificar la signatura, el resultat no serà idèntic a l' original: l' ordre de les claus, les fuites o la codificació poden canviar. L'HMAC falla i el teu endpoint rebutja totes les peticions reals. La solució és verificar sempre contra el cos en cru (per exemple, req.body com Buffer a Express amb express.raw(), o await req.text() en Next.js) i parsear només després que la firma sigui vàlida.

El timestamp signat també és crucial. No només serveix per verificar l'autenticitat, sinó que permet rebutjar atacs de reinjecció (replay). Si emmagatzemes un marge de tolerància (per exemple, cinc minuts), detectes qualsevol intent de reutilitzar una petició antiga. Sense aquesta comprovació, un atacant podria capturar una petició vàlida i reenviar-la més tard, enganyant el teu sistema. Implementar-ho és senzill: calcula la diferència absoluta entre el timestamp i l'hora actual, i si supera el llindar, rebutja la petició. Aquest detall és part de les bones pràctiques de ciberseguretat que apliquem en cada projecte.

La comparació de firmes s'ha de fer en temps constant per evitar atacs de canal lateral (timing attacks). En Node.js, crypto.timingSafeEqual és el teu aliat. En altres llenguatges, busca funcions similars. No compares cadenes amb operadors comuns perquè la diferència en microsegons pot filtrar informació a l'atacant. A més, recorda que la firma sempre comença amb v0=; si no respectes aquest prefix, la comparació fallarà encara que el hash sigui correcte.

Ara, imagina que la teva verificació és correcta però el teu endpoint triga més de tres segons a respondre, o retorna un error 5xx durant una alta càrrega. Slack, en no rebre un 2xx a temps, reintenta fins a tres vegades (gairebé immediatament, a 1 minut i a 5 minuts). Si la taxa de fallades supera el 95% en una finestra de 60 minuts, Slack deshabilita temporalment l'entrega d'esdeveniments a la teva app. Això significa que perds app_mention, interaccions i altres esdeveniments crítics. Els teus usuaris no reben resposta, i el teu equip pot trigar hores a adonar-se'n. Per evitar aquest escenari, moltes empreses opten per una arquitectura de cua i processament asíncron.

En Q2BSTUDIO ajudem els nostres clients a dissenyar sistemes robustos que separen la recepció d'esdeveniments del seu processament. Per exemple, pots fer servir un servei cloud com AWS o Azure per allotjar una funció que rebi el webhook, verifiqui la firma, emmagatzeni l'esdeveniment en una cua (SQS, EventBridge) i respongui immediatament a Slack amb un 200. Així, encara que el teu backend principal estigui sota desplegament o saturat, els esdeveniments no es perden. Després, un worker els processa amb reintents propis i una cua de missatges fallits (dead-letter queue) que pots revisar manualment. Això és part de la nostra oferta en ia per a empreses i automatització intel·ligent, on combinem desenvolupament de programari a mida amb infraestructura cloud.

La verificació de signatures també es connecta amb altres àmbits. Per exemple, els esdeveniments de Slack poden alimentar dashboards de Power BI per monitoritzar en temps real mètriques d'equip, o disparar fluxos d'agents IA que classifiquin missatges i automatitzin respostes. Els nostres serveis intel·ligència de negoci integren fonts de dades com Slack per generar reports accionables. I si la teva empresa maneja dades sensibles, la ciberseguretat en la recepció de webhooks és el primer filtre que protegeix tota la cadena.

Un aspecte que sovint se subestima és la gestió de duplicats. Slack, com qualsevol sistema amb reintents, pot enviar el mateix esdeveniment més d'una vegada. El teu endpoint ha de ser idempotent: processar el mateix missatge múltiples vegades sense efectes secundaris. Registrar un identificador únic (com el timestamp més un hash del cos) i comprovar-ho abans de processar evitant molestos. En projectes complexos, aquesta lògica s'orquestra millor amb aplicacions a mesura que contemplin el cicle complet de l'esdeveniment.

Finalment, recorda que el teu secret de signatura ha d'estar protegit. Mai l'incloguis en codi font ni en repositoris públics. Úsa-ho des de variables d'entorn o un gestor de secrets cloud (AWS Secrets Manager, Azure Key Vault). La rotació periòdica del secret també és recomanable, tot i que Slack no l'exigeix. Si treballes amb serveis cloud aws i azure, podem configurar pipelins d'integració contínua que despleguin els teus endpoints amb les millors pràctiques de seguretat.

En resum, verificar les firmes de Slack no és difícil si respectes el raw body, el timestamp i la comparació en temps constant. El veritable desafiament és dissenyar un sistema que no només validi, sinó que mantingui la disponibilitat fins i tot quan la teva aplicació principal tingui pics de càrrega o fallades. En Q2BSTUDIO combinem la nostra experiència en automatització de processos amb un enfocament en seguretat i escalabilitat. Et convidem a conèixer com podem transformar les teves integracions en actius confiables, ja sigui amb Slack, APIs de tercers o sistemes propis. No deixis que una fallada en la verificació deshabiliti el teu endpoint: construeix una base sòlida des del primer dia.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.