> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# reCAPTCHA

> Как защитить вход, регистрацию и сброс пароля с помощью Google reCAPTCHA?

> [!NOTE]
>
> Эта функция разработана в [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/ayakaleaf-pro) и доступна начиная с v6.4.0.

Вход по электронной почте и паролю, вход через LDAP, регистрация и сброс пароля могут запрашивать Google reCAPTCHA v2 (невидимую). По умолчанию эта функция отключена. Большинство пользователей ничего не замечают: проверка выполняется при нажатии кнопки, а Google показывает задание с картинками, только если сочтёт запрос подозрительным. Вход через SAML и OIDC, а также учётные записи, созданные администратором, это не затрагивает.

1. В [консоли администратора reCAPTCHA](https://www.google.com/recaptcha/admin) создайте ключ типа **reCAPTCHA v2**, **Invisible reCAPTCHA badge** и добавьте домен вашего экземпляра. Домен охватывает и свои поддомены, например `example.com` охватывает `latex.example.com`.
2. Задайте два ключа в `config/variables.env` и выполните `bin/up`:

```text theme={null}
RECAPTCHA_SITE_KEY=<site key>
RECAPTCHA_SECRET_KEY=<secret key>
```

| Переменная | По умолчанию | Назначение |
| - | - | - |
| `RECAPTCHA_SITE_KEY` | Не задана | Включает капчу для входа, входа через LDAP, регистрации и сброса пароля. |
| `RECAPTCHA_SECRET_KEY` | Не задана | Секретный ключ того же ключа reCAPTCHA, с помощью которого сервер проверяет ответы. |
| `RECAPTCHA_ENDPOINT` | `https://www.google.com/recaptcha/api/siteverify` | Адрес, по которому сервер проверяет ответы. Если `www.google.com` недоступен, используйте `https://www.recaptcha.net/recaptcha/api/siteverify`. |
| `CAPTCHA_TRUSTED_USERS` | Не задана | Адреса электронной почты через запятую, которые сервер пропускает без проверки капчи. |
| `CAPTCHA_TRUSTED_USERS_REGEX` | Не задана | Регулярное выражение для таких адресов; оно должно совпадать со всем адресом электронной почты. |
| `DEVICE_HISTORY_SECRET` | Не задана | 64 шестнадцатеричных символа, например из `openssl rand -hex 32`. Позволяет браузеру, в котором выполнен вход с определённым адресом электронной почты, пропускать капчу для этого адреса в течение 90 дней. Если не задана, капча запрашивается при каждом входе. |

* Страницы загружают скрипт reCAPTCHA с `www.recaptcha.net`, что работает и там, где `www.google.com` заблокирован.
* Регистрация и сброс пароля запрашивают капчу каждый раз. Вход через LDAP также запрашивает её каждый раз, даже при заданной `DEVICE_HISTORY_SECRET`: при нём отправляется имя пользователя, а не адрес электронной почты.
* Количество попыток входа также по-прежнему ограничено: 20 попыток в минуту с одного IP-адреса и 10 попыток за 2 минуты для одного адреса электронной почты.
* Ayakaleaf Pro проверяет только то, принимает ли Google ответ. Оценки и пороги reCAPTCHA v3 не поддерживаются, а когда показывать задание, решает Google.
* Чтобы опробовать функцию до получения ключа, используйте [тестовые ключи](https://developers.google.com/recaptcha/docs/faq) Google: все проверки проходят успешно, а виджет показывает предупреждение, поэтому не используйте их в продакшене.


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