> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Protecció contra bots en l'inici de sessió

> Protegeix el registre i l'inici de sessió amb Didit contra bots, farcit de credencials, força bruta i correus temporals. Inclou mode atac.

> [!WARNING]
>
> L'autenticació és nova. La protecció està desactivada fins que l'activis. Els límits de freqüència i els intents limitats de codi sempre s'apliquen.

La protecció contra bots s'executa en cada registre, inici de sessió i restabliment de contrasenya. Comprova l'intent amb sis polítiques. Cada política té un mode:

| Mode | Què passa |
| - | - |
| **Desactivat** | La política no es comprova. |
| **Registra** | L'intent continua. Un esdeveniment `risk_logged` registra la coincidència. |
| **Repte** | La persona ha de superar una prova addicional abans que continuï l'intent. |
| **Bloqueja** | L'intent falla amb `403 {"error": "attempt_blocked"}`. |

## Configura la protecció

Llegeix i canvia la configuració amb `GET` i `PATCH` sobre `protection/` a l'API de gestió d'autenticació de la teva aplicació, o des de la consola.

```json theme={null}
{
  "enabled": true,
  "breached_password_check": true,
  "policies": {
    "bots": "block",
    "stuffing": "block",
    "brute": "challenge",
    "disposable": "block",
    "vpn": "challenge",
    "travel": "block"
  }
}
```

`enabled` i `breached_password_check` són `false` per defecte. Els modes anteriors són els predeterminats quan actives la protecció.

## Polítiques

| Política | Coincideix quan |
| - | - |
| `bots` | El client informa d'una puntuació de bot de 0,8 o superior, o l'agent d'usuari és un navegador sense interfície o automatitzat conegut. |
| `stuffing` | Un dispositiu o IP intenta 10 o més comptes diferents en 15 minuts, o la contrasenya és una contrasenya filtrada coneguda. |
| `brute` | El compte té 5 o més intents fallits. Les contrasenyes errònies i els codis de correu electrònic, telèfon i autenticador incorrectes compten. |
| `disposable` | Un registre utilitza un domini de correu electrònic temporal. |
| `vpn` | L'adreça IP pertany a una xarxa VPN, Tor o de centre de dades. |
| `travel` | L'inici de sessió es fa a més de 500 km de l'anterior, a més de 1.000 km/h, dins de 24 hores. |

Les polítiques `vpn` i `travel` usen l'anàlisi d'IP de Didit. Si aquesta consulta no està disponible, l'intent continua; un inici de sessió mai falla per això. La ubicació per a `travel` s'actualitza només després d'un inici de sessió completat.

### Força bruta i bloqueig

El mode `brute` decideix què passa després de 5 errors:

* **Bloqueja**: la persona ha de restablir la seva contrasenya abans de poder tornar a iniciar sessió.
* **Repte**: el compte es bloqueja durant 15 minuts, i el següent intent necessita una prova addicional.
* **Desactivat** o **Registra**: no hi ha bloqueig.

El restabliment de contrasenya continua disponible després d'un bloqueig per força bruta, i un restabliment elimina el bloqueig. El teu equip també pot desbloquejar un compte des de la consola.

Si mai no has desat la configuració de protecció, s'aplica una regla més simple: 5 contrasenyes incorrectes bloquegen el compte durant 15 minuts.

### Puntuació de bot i senyals del dispositiu

Envia senyals del dispositiu a les crides en temps d'execució amb aquestes capçaleres. Les pàgines allotjades les envien per tu.

| Capçalera | Contingut |
| - | - |
| `X-Didit-PID` | Un ID de dispositiu persistent, de 8 a 128 caràcters de `A-Z a-z 0-9 . _ : -`. |
| `X-Didit-FP-Hash` | Una empremta digital del dispositiu. |
| `X-Didit-FP-Bot-Score` | Una puntuació de bot de 0 a 1. Els valors fora d'aquest interval s'ignoren. |

Aquests senyals són context per a una decisió, no una prova d'identitat. També viatgen amb cada [esdeveniment d'inici de sessió](https://docs.didit.me/ca/authentication/events-and-webhooks.md), on les regles poden llegir `event.device.bot_score`.

> [!NOTE]
>
> `AUTOMATION_FRAMEWORK_DETECTED` és una comprovació diferent. És un [avís d'anàlisi d'IP i dispositiu](https://docs.didit.me/ca/core-technology/ip-analysis/warnings-ip-analysis.md) sobre **sessions de verificació**, que es genera quan el SDK de verificació informa d'un marc d'automatització del navegador. No s'executa en iniciar sessió. En iniciar sessió, l'automatització es detecta amb la política `bots` anterior.

## Reptes

Un intent amb repte retorna això en lloc d'un codi d'inici de sessió:

```json theme={null}
{
  "protection_required": true,
  "challenge": "...",
  "methods": ["passkey", "email_code"],
  "options": { "...": "WebAuthn options when a passkey is offered" },
  "expires_in": 300
}
```

Completa'l amb `POST protection/complete/`:

* `{"challenge", "method": "email_code", "code"}` amb el codi de 6 dígits enviat al correu electrònic de la persona, o
* `{"challenge", "method": "passkey", "response"}` amb la resposta de WebAuthn.

Tens 5 intents en 5 minuts. Si la persona no té cap prova disponible, la crida retorna `403 {"error": "protection_factor_unavailable"}`.

## Contrasenyes filtrades

Amb `breached_password_check: true`, Didit comprova les contrasenyes noves i les contrasenyes utilitzades en els restabliments contra contrasenyes filtrades conegudes. La contrasenya mateixa mai s'envia enlloc. Una contrasenya filtrada es rebutja amb `password_breached`. En iniciar sessió, una contrasenya filtrada compta com a coincidència de `stuffing`. Si la comprovació no està disponible, la contrasenya s'accepta.

## Mode d'atac

Activa el mode d'atac durant un atac actiu:

* `POST protection/attack-mode/` amb `{"duration_hours": 1}` (o `6` o `24`) retorna `201`.
* `DELETE protection/attack-mode/` el finalitza abans d'hora. També finalitza automàticament quan acaba la durada.

Mentre el mode d'atac està activat:

* cada registre i inici de sessió ha de superar un repte de **clau d'accés**. No s'accepta un codi per correu electrònic. Els nous registres i les persones sense clau d'accés no poden completar-ho fins que acabi el mode d'atac.
* un registre des d'una xarxa VPN, Tor o de centre de dades es bloqueja.

## Límits de freqüència

Cada ruta d'execució té un límit per IP i per aplicació:

| Rutes | Per minut | Per hora |
| - | - | - |
| Descobriment i JWKS | 1.200 | 12.000 |
| API d'execució i pàgines allotjades | 30 | 300 |
| Codis de correu electrònic, codis de telèfon i callbacks de proveïdors | 5 | 20 |

En superar el límit, la crida retorna `429`. Respecta la capçalera `Retry-After` quan n'hi hagi una. Els intents d'inici de sessió també tenen límit per minut: 60 per IP, 15 per compte, 30 per dispositiu, 3.000 per aplicació, i 20 sol·licituds de codi per SMS o WhatsApp per prefix de número de telèfon. Les renovacions de token tenen un límit d'aplicació propi, de 6.000 per minut, perquè les renovacions mai consumeixin els teus inicis de sessió.

## Esdeveniments

Cada decisió es registra com a [esdeveniment d'autenticació](https://docs.didit.me/ca/authentication/events-and-webhooks.md): `risk_logged`, `attempt_challenged`, `attempt_blocked`, `challenge_passed`, `challenge_failed`, `attack_mode_started` i `attack_mode_ended`. L'esdeveniment mostra amb quina política ha coincidit l'intent.

## Prova-ho

En una aplicació de sandbox, prova cada mode que activis: un intent bloquejat, un repte superat i un de fallit, un bloqueig i el seu restabliment, i el mode d'atac activat i desactivat. Mantén els errors genèrics a la interfície perquè no revelin si existeix un compte.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.