Конечно, всегда есть компромисс между безопасностью и производительностью. Я бы не рекомендовал кэшировать данные проверки, но, возможно, для какого-то облегченного поиска вы могли бы рассмотреть это, но я настоятельно рекомендую не использовать такую ​​практику при публикации данных, обновлении или удалении.

ользую гуглreCAPTCHA v3 вУгловой 2 приложение для защиты от автоматической подачи формы. Мое приложение выполняет много сетевых вызовов в фоновом режиме, когда пользователи взаимодействуют с пользовательским интерфейсом.

Изindex.htmlЯ намеренно делаюблокирование вызов для загрузки библиотеки (предотвращение входа в мир угловыхrecaptcha/api.js загружен):

<script src="https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key"></script>

От конструктора угловогообслуживание Я используюДОКУМЕНТ DI токен ссылаться наgrecaptcha объект:

  constructor(@Inject(DOCUMENT) private document: any) {
    this.grecaptcha = this.document.grecaptcha;
  }

После загрузки приложения (используякрючки жизненного цикла), вышеупомянутые угловые сервисные звонкиgrecaptcha.execute получить уникальныйtoken (в соответствии сИнтеграция внешнего интерфейса руководство):

  public executeCaptcha() {
    this.grecaptcha.ready(() => {
      this.grecaptcha
        .execute(MyService.CAPTCHA_KEY, {
          action: 'execute'
        })
        .then((token: string) => this.token = token);
    });
  }

token является параметром обратного вызова и хранится как член службы Angular (this.token = token)).

На данный момент приложение не совершало никаких вызовов API для моегобэкенди пользователь не был проверен как человек.

token должен быть отправлен на мой сервер, который, в свою очередь, долженпроверить ответ пользователя сделавЗапрос API.

Ответ API затем можно вернуть в браузер (приложение Angular):

{
  "success": true|false,
  "challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
  "hostname": string,         // the hostname of the site where the reCAPTCHA was solved
  "error-codes": [...]        // optional
}

Вопросов

Еслиtoken отправляться с каждым HTTP-запросом из моего приложения Angular и проверяться каждый раз?... или пользователь может быть проверен один раз (в начале) и егоГол вспомнили в приложении Angular?Я читаюгде-то что Google использует движения мыши и различные сигналы на стороне клиента для вычисления оценки.... означает ли это, что я должен (повторно) проверять периодически, чтобы получить улучшенную оценку?

Ответы на вопрос(1)

Ваш ответ на вопрос