Seguridad y confianza entre sitio y agente|INEMA.CLUB-PRO

Clase 6 · 18 min

Identificar quién llega: Web Bot Auth y signed agents (borrador del IETF)

User-Agent lo puede escribir cualquiera. Web Bot Auth es la propuesta del IETF para que el bot firme cada solicitud con una clave publicada en una URL suya. Todavía es un borrador (-00, septiembre de 2026). En esta clase compruebas una firma contra el vector del draft y ves en un servidor local qué prueba y qué no prueba.

Comenzar la clase
Credencial metálica sin inscripción sobre un teclado oscuro, junto a un cable de red, luz neutra.

En esta clase vas a

  1. 1HTTP Message Signatures (RFC 9421) y lo que añade el draft
  2. 2El vector de prueba del draft, rehecho byte a byte
  3. 3Componentes cubiertos, vigencia y replay
  4. 4Identidad no es autorización: la política sigue siendo tuya

Objetivo: comprobar una firma Web Bot Auth con el vector del draft y verificar solicitudes firmadas en un servidor local, sabiendo lo que la firma no prueba.

01Del agente que firma a la política del sitio

draft-ietf-webbotauth-httpsig-protocol-00 (1 de septiembre de 2026). Haz clic en cada etapa.

Haz clic en cada bloque del diagrama para ver qué hace.

Borrador de grupo del IETF (Cloudflare y Google), expira el 5 de marzo de 2027. No es un RFC.

02El vector del draft, rehecho

Apéndice E.2.1: Ed25519 con la clave de prueba pública del RFC 9421 (B.1.4). Solo node:crypto, ningún paquete.

Terminal · vector
cd ~/projetos/formacao-webmcp-seguranca-v72/kit
node scripts/wba.mjs vetor; echo "saída: $?"
Ejemplo del repositorio
== node v24.13.0 · draft-ietf-webbotauth-httpsig-protocol-00 (01/09/2026)
keyid calculado: poqkLGiymh_W0uP6PZFw-dvez3QJT5SolqXBCW38r0U · confere
assinatura: RdNFx5Bj6au3YgAMQL/RzmUl… · confere
vetor E.2.1: confere
saída: 0

Ed25519 es determinista: misma clave y misma base dan la misma firma. Si tu implementación rehace el vector, está armando la base de firma como lo hace el draft. La clave de prueba nunca va a producción (anexo C.12 del draft).

03El agente firma, el origen verifica: siete casos

Clave nueva en cada ejecución. El origen ya tiene el directorio del agente, como lo permite el draft (§4.4); nada sale de tu máquina.

Terminal · demo
cd ~/projetos/formacao-webmcp-seguranca-v72/kit
node scripts/wba.mjs demo; echo "saída: $?"
Ejemplo del repositorio
== node v24.13.0 · draft-ietf-webbotauth-httpsig-protocol-00 (01/09/2026) · origem http://127.0.0.1:36913
1 · sem assinatura → anônimo: sem assinatura (a política do site decide)
2 · assinado, válido → identificado: https://agente.exemplo (chave gw6T0rIc…)
3 · mesma assinatura em outro caminho → recusado: assinatura não confere
4 · assinatura vencida → recusado: assinatura vencida
5 · chave que a origem não conhece → recusado: chave desconhecida para https://agente.exemplo
6 · replay dentro da validade → identificado: https://agente.exemplo (chave gw6T0rIc…)
7 · assinatura mínima (só @authority) usada em /admin → identificado: https://agente.exemplo (chave gw6T0rIc…)
7/7 casos como esperado · replay dentro da validade: aceito
saída: 0

Los casos 6 y 7 son la advertencia del draft (§5.2): dentro de la validez, quien vio el pedido puede repetirlo; y una firma que cubre solo @authority vale para cualquier ruta del sitio. Por eso: validez corta y @method + @path cubiertos, y el origen puede exigir esos componentes.

04Dónde aparece ya

1. Cloudflare

Desde el 1 de julio de 2026, los agentes firmados con Web Bot Auth cuentan como Verified, con un campo nuevo: Direct (un solo operador) o Intermediary (servicio que muchos usuarios comandan).

05Práctica

Verificar y decidir.

E16 · Vector del draft

3 min

Ejecuta el bloque vector.

Listo cuando: vetor E.2.1: confere y saída: 0.

E17 · Siete casos

10 min

Ejecuta el bloque demo y explica, en una frase cada uno, por qué se aceptaron los casos 6 y 7.

Listo cuando: 7/7 casos como esperado · replay dentro da validade: aceito.

E18 · Política de tu sitio

15 min

Crea politica-bots.md con tres líneas, una por caso, que empiecen por anônimo:, assinado e conhecido: y assinado e desconhecido:, cada una con lo que hace el sitio (permitir, limitar, bloquear, en qué páginas). Los prefijos quedan en portugués porque el comando de verificación los busca.

Listo cuando: grep -c -E "^(anônimo|assinado e conhecido|assinado e desconhecido):" politica-bots.md → 3.

06Prueba de la clase

Pregunta 1 de 4

¿Qué prueba una firma Web Bot Auth válida?competencia

07En tres frases

FirmaPrueba quién tiene la clave de la URL, no la intención ni el permiso.
CoberturaValidez corta, @method y @path cubiertos; el replay existe.
PolíticaAnónimo, conocido y desconocido: tres reglas tuyas.

Para ir más allá

Clase anteriorSiguiente clase