La seguridad, dicha claramente.
Sin muro de insignias: los controles concretos y verificables que hay hoy en el producto. Haga preguntas difíciles: hello@pauli.xyz.
Transporte y autenticación
- Ingreso solo TLS. La API escucha en loopback; el único punto de entrada público termina TLS, así que las claves bearer nunca viajan en claro.
- Claves con hash, mostradas una vez. Hashes SHA-256 en reposo; el texto plano se devuelve exactamente una vez, al crear o rotar. La rotación y la revocación son instantáneas.
- Aislamiento por espacio de trabajo en cada consulta. Acotado en la capa de persistencia; las lecturas entre inquilinos devuelven 404, no 403.
- Límite de tasa por clave. Cubos de tokens en Redis; fail-open o fail-closed es una elección del operador.
Webhooks
- Cargas firmadas. HMAC-SHA256 con marca de tiempo (
X-Pauli-Signature) sobre los bytes exactos de la carga, de modo que una entrega capturada solo se reproduce dentro de su tolerancia de verificación; las rotaciones firman con el secreto viejo y el nuevo durante una ventana de solape.X-Pauli-Event-Iddeduplica. - Guardas SSRF, dos veces. URLs de webhook solo https, rechazadas cuando resuelven a direcciones no públicas (loopback, RFC 1918, link-local, metadatos de la nube) al registrarlas, y verificadas de nuevo en la entrega contra DNS rebinding. Siempre activo; sin interruptor.
Dinero e integridad de los datos
- Decimal de extremo a extremo. El dinero nunca pasa por punto flotante; los importes de la API son cadenas decimales exactas.
- Facturación exactamente-una-vez, garantizada por la base de datos. Índices únicos parciales protegen cobros, débitos y reembolsos; los reintentos y las reentregas no pueden cobrar ni acreditar dos veces.
- Los pagos acreditan solo con fondos confirmados. Los webhooks de Stripe se verifican por firma con tolerancia de repetición; un compare-and-swap de estado hace idempotente la acreditación.
- Registro de auditoría de solo anexado. Ciclo de vida de claves, eventos de jobs, facturación, decisiones de cumplimiento y autenticaciones fallidas, escritos en la misma transacción que la acción.
Operaciones
- Una sola fuente de verdad. Postgres guarda todo el estado; perder la cola no pierde jobs, resultados ni dinero.
- Procesamiento a prueba de caídas. Los workers reclaman jobs con arriendos y confirman en cada frontera de fase; los barridos rederivan cualquier trabajo que un proceso muerto dejara caer.
- Copias de seguridad verificadas. Probadas con restauración según calendario (una copia sin restaurar no es copia); copias cifradas salen del host.
- Los errores nunca filtran internos. Los cuerpos 5xx llevan solo un código estable y un id de solicitud; el detalle queda en los logs del servidor.
- Página de estado pública. Alojada fuera de nuestra infraestructura en status.pauli.xyz, para seguir accesible cuando nosotros no lo estemos.
Postura de cumplimiento
- Puerta de control de exportaciones en el enrutador. El hardware controlado solo se enruta a espacios de trabajo verificados con jurisdicción declarada; cada denegación se audita.
- Filtrado de partes denegadas. Cada decisión de filtrado se audita; el enrutamiento la lee en cada solicitud.
Sobre SOC 2: nos certificaremos cuando los clientes lo
requieran, y completamos cuestionarios de seguridad a petición.
Reportar una vulnerabilidad
Escriba a hello@pauli.xyz con los pasos de reproducción. Acusamos recibo en dos días hábiles y no emprendemos acciones legales contra la investigación de buena fe.