Seguridad web de las páginas alojadas y de la API de front
El inicio de sesión alojado, el portal de cuenta, las páginas de correo electrónico (verificación, restablecimiento de contraseña, invitación) y la API del navegador que estas llaman siguen una base fija de seguridad web en todos los planes. Estas protecciones no son configuraciones que pueda desactivar. El único ajuste que usted controla es qué orígenes web pueden llamar a los endpoints de OAuth desde el navegador.
Falsificación de petición entre sitios (CSRF)
Las peticiones que cambian el estado se comprueban antes de leer o modificar nada:
- Comprobación de origen. Una petición que cambia el estado, dirigida a la API de inicio de sesión alojado o a una página de verificación o restablecimiento, debe incluir una cabecera
Originque coincida exactamente con el host de inicio de sesión del entorno. Cualquier otro origen se rechaza conorigin_not_allowed. - Pantalla de consentimiento. Un envío de formulario en la pantalla de consentimiento se rechaza cuando su
Originno es el host propio de la página, o cuandoSec-Fetch-Siteestá presente y no essame-origin. - Tokens de formulario. Cada transacción de inicio de sesión y cada formulario de correo tiene su propio token CSRF, derivado con HMAC-SHA256 a partir de una clave por entorno. La API de inicio de sesión lo espera en la cabecera
Idp-Csrf-Token; el token de un formulario no sirve para otro. Los tokens se comparan en tiempo constante. - Cookies. Las cookies que transportan el estado del inicio de sesión usan
SameSite=Lax(véase más abajo), por lo que una petición iniciada desde otro sitio no las envía.
Peticiones de origen cruzado (CORS)
CORS solo se responde en los endpoints de OAuth que llama una aplicación de navegador: los endpoints de token, revocación, solicitud de autorización enviada (PAR) y userinfo. Se aplica solo a las aplicaciones de página única públicas (tipo spa).
- Defina los orígenes permitidos por aplicación con
allowed_web_origins(https://host[:port], como máximo 20, sin comodines). Consulte Cree una aplicación. - La petición preflight del navegador no indica qué aplicación llama, por lo que se responde con la unión de los orígenes permitidos de las aplicaciones de página única públicas activas del entorno. La petición real se comprueba entonces con la lista de orígenes de la aplicación que llama.
- Un origen fuera de la lista de esa aplicación se rechaza con
403 origin_not_allowedy no recibe la cabeceraAccess-Control-Allow-Origin. - Un origen permitido se devuelve exactamente igual.
*ynullnunca se envían,Access-Control-Allow-Credentialsnunca se envía, y cada respuesta de origen cruzado incluyeVary: Origin. - Las peticiones desde el propio host de inicio de sesión no son de origen cruzado y no se ven afectadas.
Redirecciones tras el inicio de sesión
Si usa el SDK de Next.js, returnTo debe ser una ruta de su propia aplicación. Una URL completa o un valor como //evil.example se ignora y el usuario llega a /. Consulte SDK de Next.js.
Cabeceras de seguridad
Las páginas alojadas establecen estas cabeceras en cada respuesta:
| Cabecera | Valor |
|---|---|
Content-Security-Policy |
default-src 'none'; scripts solo con un nonce nuevo por respuesta; style-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; upgrade-insecure-requests; Trusted Types obligatorio para los scripts |
Reporting-Endpoints y report-to |
Las infracciones de la política se notifican a /u/csp-report en el mismo host |
X-Frame-Options |
DENY: las páginas alojadas no pueden incrustarse en un marco |
X-Content-Type-Options |
nosniff |
Referrer-Policy |
no-referrer |
Cross-Origin-Opener-Policy |
same-origin |
Permissions-Policy |
Cámara, micrófono, geolocalización, pagos, USB, serie, HID y Bluetooth están desactivados; las solicitudes de clave de acceso se permiten para la propia página |
Cache-Control |
no-store |
La política no permite scripts en línea ni palabras clave unsafe-. Los envíos de formularios se limitan al host propio de la página; en la pantalla de consentimiento, la política también permite la dirección de redirección de la aplicación que solicita, para que la decisión pueda volver a ella.
El endpoint de informes acepta solo informes de infracciones del navegador de como máximo 8 KiB, y tiene límite de frecuencia por dirección IP. Los informes se cuentan por directiva. Al registrarse, no incluyen la cadena de consulta, el fragmento ni datos del usuario.
Strict-Transport-Security
- Los hosts de entorno en
keenauth.appenvíanmax-age=63072000; includeSubDomains. - Un dominio personalizado envía solo
max-age=63072000, sinincludeSubDomains. KeenAuth no puede decidir por los demás subdominios de su dominio, por lo que esa elección le corresponde a usted.
Cookies
Las cookies de estado del inicio de sesión llevan el prefijo __Host-, por lo que un navegador solo las acepta por HTTPS, con Path=/ y sin atributo Domain. No pueden establecerse desde un subdominio hermano.
| Cookie | Indicadores | Finalidad |
|---|---|---|
__Host-idp_session |
Secure, HttpOnly, SameSite=Lax |
La sesión del usuario. Su duración termina en la expiración absoluta de la sesión |
__Host-idp_device |
Secure, HttpOnly, SameSite=Lax |
Reconocimiento del dispositivo |
__Host-idp_ltx y __Host-idp_azr_* |
Secure, HttpOnly, SameSite=Lax |
Vincula un intento de inicio de sesión o autorización al navegador que lo inició |
__Host-idp_fed_bind |
Secure, HttpOnly, SameSite=None |
Vinculación de corta duración para el inicio de sesión SAML empresarial. El proveedor de identidad envía los datos de vuelta desde otro sitio, por lo que Lax la descartaría |
Los scripts de la página no pueden leer los valores de las cookies (HttpOnly).