diff --git a/ru/_includes/smartcaptcha/captcha-validation.md b/ru/_includes/smartcaptcha/captcha-validation.md index 4070069f97..e8a0e601cb 100644 --- a/ru/_includes/smartcaptcha/captcha-validation.md +++ b/ru/_includes/smartcaptcha/captcha-validation.md @@ -1,4 +1,7 @@ -{{ captcha-name }}, проверив запрос, присваивает ему идентификатор — одноразовый токен. По этому токену вы можете запросить у сервиса результат проверки запроса пользователя. Токен действителен 5 минут. По истечении этого времени токен становится недействительным и пользователю необходимо снова пройти проверку. +Рекомендуем добавлять проверку {{ captcha-name }} для действий пользователя, требующих верификации. +Например, чтобы проверить отправку формы, добавьте проверку капчи на действие отправки. + +{{ captcha-name }} проверяет запрос и присваивает ему идентификатор — одноразовый токен. По этому токену вы можете запросить у сервиса результат проверки запроса пользователя. Токен действителен 5 минут. По истечении этого времени токен становится недействительным, и пользователю необходимо снова пройти проверку. После проверки токен загружается в элемент `` на странице пользователя. Например: @@ -14,10 +17,17 @@ * `
` — элемент `div` с виджетом. * `value` — значение токена. -Чтобы узнать результат проверки, отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate`, передав параметры в формате `x-www-form-urlencoded`: +Отправьте одноразовый токен на ваш бэкенд и выполните его проверку в течение пяти минут. -``` -secret=<ключ_сервера>&token=<токен>&ip= +Чтобы узнать результат проверки, отправьте POST-запрос на адрес `https://smartcaptcha.yandexcloud.net/validate` с типом содержимого `x-www-form-urlencoded`: + +```text +POST https://{{ captcha-domain }}/validate HTTP/1.1 +Content-Type: application/x-www-form-urlencoded + +secret=<ключ_сервера>& +token=<токен>& +ip= ``` Где: diff --git a/ru/_includes/smartcaptcha/query-parameters.md b/ru/_includes/smartcaptcha/query-parameters.md index 51c3598690..68676e2051 100644 --- a/ru/_includes/smartcaptcha/query-parameters.md +++ b/ru/_includes/smartcaptcha/query-parameters.md @@ -1,3 +1,3 @@ * `secret` — [ключ сервера](../../smartcaptcha/concepts/keys.md); -* `token` — одноразовый токен, полученный после прохождения проверки; +* `token` — одноразовый токен, полученный после проверки; * `ip` — IP-адрес пользователя, с которого пришел запрос на проверку токена. Этот параметр не обязателен, однако мы просим передавать IP-адрес пользователя при запросах. Это помогает улучшить качество работы {{ captcha-name }}. \ No newline at end of file diff --git a/ru/_tutorials/security/invisible-captcha-android.md b/ru/_tutorials/security/invisible-captcha-android.md index 1556fcd641..7855de5d61 100644 --- a/ru/_tutorials/security/invisible-captcha-android.md +++ b/ru/_tutorials/security/invisible-captcha-android.md @@ -48,7 +48,7 @@ ```kotlin val webView = findViewById(R.id.webViewCaptcha) - webView.loadUrl("URL_страницы_с_капчей?sitekey=<ключ_клиентской_части>&invisible=true") + webView.loadUrl("URL_страницы_с_капчей?sitekey=<ключ_клиента>&invisible=true") ``` Где: @@ -84,20 +84,25 @@ ## Получите результат прохождения капчи {#get-result} 1. Сохраните токен прохождения капчи. Он вернется в методе `onGetToken(token: String)`, когда сервис обработает попытку. -1. Для проверки токена отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate`, передав параметры в формате `x-www-form-urlencoded`: +1. Чтобы узнать результат проверки, отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate` с типом содержимого `x-www-form-urlencoded`: {% include [query-parameters](../../_includes/smartcaptcha/query-parameters.md) %} {% note info %} - Данная логика должна выполняться на бэкенде. В само Android-приложение секретный ключ `secret` попасть не должен. + Данная логика должна выполняться на бэкенде. В само Android-приложение ключ сервера `secret` попасть не должен. {% endnote %} >Пример запроса: > >```text - >https://{{ captcha-domain }}/validate?secret=<ключ_сервера>&ip=&token=<токен> + >POST https://{{ captcha-domain }}/validate HTTP/1.1 + >Content-Type: application/x-www-form-urlencoded + > + > secret=<ключ_сервера>& + > token=<токен>& + > ip= >``` 1. Получите [ответ с сервера](../../smartcaptcha/concepts/validation.md). Он содержит JSON-объект с полями `status` и `message`. diff --git a/ru/_tutorials/security/quickstart-android.md b/ru/_tutorials/security/quickstart-android.md index adcab587ff..6611c576b8 100644 --- a/ru/_tutorials/security/quickstart-android.md +++ b/ru/_tutorials/security/quickstart-android.md @@ -32,11 +32,11 @@ 1. Создайте **WebView** и добавьте его на экран. 1. Загрузите в **WebView** URL веб-страницы с капчей. -1. Вставьте в URL [query-параметр](../../smartcaptcha/concepts/widget-methods.md#methods) `sitekey=<ключ_клиентской_части>`: +1. Вставьте в URL [query-параметр](../../smartcaptcha/concepts/widget-methods.md#methods) `sitekey=<ключ_клиента>`: ```kotlin val webView = findViewById(R.id.webViewCaptcha) - webView.loadUrl("URL_страницы_с_капчей?sitekey=<ключ_клиентской_части>") + webView.loadUrl("URL_страницы_с_капчей?sitekey=<ключ_клиента>") ``` 1. Добавьте в **WebView** созданный JavaScript Interface. Укажите вторым параметром `NativeClient` — это имя, на которое веб-страница будет отправлять сообщения с помощью функции обратного вызова: @@ -49,20 +49,25 @@ ## Получите результат прохождения капчи {#get-result} 1. Сохраните токен прохождения капчи. Он вернется в методе `onGetToken(token: String)`, когда сервис обработает попытку. -1. Для проверки токена отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate`, передав параметры в формате `x-www-form-urlencoded`: +1. Чтобы узнать результат проверки, отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate` с типом содержимого `x-www-form-urlencoded`: {% include [query-parameters](../../_includes/smartcaptcha/query-parameters.md) %} {% note info %} - Данная логика должна выполняться на бэкенде. В само Android-приложение секретный ключ `secret` попасть не должен. + Данная логика должна выполняться на бэкенде. В само Android-приложение ключ сервера `secret` попасть не должен. {% endnote %} - >Пример запроса: - > +Пример запроса: + >```text - >https://{{ captcha-domain }}/validate?secret=<ключ_сервера>&ip=&token=<токен> + >POST https://{{ captcha-domain }}/validate HTTP/1.1 + >Content-Type: application/x-www-form-urlencoded + > + > secret=<ключ_сервера>& + > token=<токен>& + > ip= >``` 1. Получите [ответ с сервера](../../smartcaptcha/concepts/validation.md). Он содержит JSON-объект с полями `status` и `message`. diff --git a/ru/_tutorials/security/quickstart-ios.md b/ru/_tutorials/security/quickstart-ios.md index 1be19ebb42..9716252e8c 100644 --- a/ru/_tutorials/security/quickstart-ios.md +++ b/ru/_tutorials/security/quickstart-ios.md @@ -60,7 +60,8 @@ } ``` -1. После получения токена из метода `captchaDidFinish` отправьте POST-запрос на сервер для проверки `https://{{ captcha-domain }}/validate`, передав параметры в формате `x-www-form-urlencoded`: +1. Схраните токен прохождения капчи. Он вернется в методе `captchaDidFinish`, когда сервис обработает попытку. +1. Чтобы узнать результат проверки, отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate` с типом содержимого `x-www-form-urlencoded`: {% include [query-parameters](../../_includes/smartcaptcha/query-parameters.md) %} diff --git a/ru/smartcaptcha/concepts/domain-validation.md b/ru/smartcaptcha/concepts/domain-validation.md index 2565c1cb82..446112a29b 100644 --- a/ru/smartcaptcha/concepts/domain-validation.md +++ b/ru/smartcaptcha/concepts/domain-validation.md @@ -2,7 +2,7 @@ При создании капчи указывается список доменов, на которых она будет размещена. По умолчанию {{ captcha-name }} проверяет имя домена и позволяет использовать капчу только на сайтах, которые входят в этот список. -Проверку можно отключить, но это представляет большой риск для безопасности — капча может быть размещена на любом сайте, и кто угодно сможет использовать ваш [ключ](./keys.md). В этом случае выполняйте проверку самостоятельно на своем сервере. Отключение может быть полезно, когда список имен доменов очень длинный, часто меняется или неизвестен. +Проверку можно отключить, но это представляет большой риск для безопасности — капча может быть размещена на любом сайте, и кто угодно сможет использовать ваш [ключ клиента](./keys.md). В этом случае выполняйте проверку самостоятельно на своем сервере. Отключение может быть полезно, когда список имен доменов очень длинный, часто меняется или неизвестен. Чтобы отключить проверку, при [создании](../operations/create-captcha.md) или редактировании капчи включите опцию **{{ ui-key.yacloud.smartcaptcha.label_no-hostname-check }}**. diff --git a/ru/smartcaptcha/concepts/invisible-captcha.md b/ru/smartcaptcha/concepts/invisible-captcha.md index 3d5b90c6dc..e0d7694f2f 100644 --- a/ru/smartcaptcha/concepts/invisible-captcha.md +++ b/ru/smartcaptcha/concepts/invisible-captcha.md @@ -34,7 +34,7 @@ } window.smartCaptcha.render('captcha-container', { - sitekey: '<ключ_клиентской_части>', + sitekey: '<ключ_клиента>', invisible: true, // Сделать капчу невидимой callback: callback, }); @@ -63,7 +63,7 @@ } window.smartCaptcha.render('captcha-container', { - sitekey: '<ключ_клиентской_части>', + sitekey: '<ключ_клиента>', invisible: true, // Сделать капчу невидимой callback: callback, }); @@ -93,7 +93,7 @@ ```js window.smartCaptcha.render('captcha-container', { - sitekey: '<ключ_клиентской_части>', + sitekey: '<ключ_клиента>', invisible: true, shieldPosition: 'top-left', callback: callback, @@ -129,7 +129,7 @@ window.smartCaptcha.render('captcha-container', { } widgetId = window.smartCaptcha.render('captcha-container', { - sitekey: '<ключ_клиентской_части>', + sitekey: '<ключ_клиента>', invisible: true, // Сделать капчу невидимой callback: callback, }); diff --git a/ru/smartcaptcha/concepts/keys.md b/ru/smartcaptcha/concepts/keys.md index fc4dbda06a..518cf9b3e1 100644 --- a/ru/smartcaptcha/concepts/keys.md +++ b/ru/smartcaptcha/concepts/keys.md @@ -5,25 +5,25 @@ description: Из статьи вы узнаете, что такое клиен # Ключи капчи -При создании капчи автоматически генерируется пара ключей: клиентский и серверный. Эти ключи генерируются один раз при создании капчи и никогда не меняются. +При создании капчи автоматически генерируется пара ключей: клиента и сервера. Эти ключи генерируются один раз при создании капчи и никогда не меняются. -Клиентский ключ (`client_key`) используется для [добавления виджета](./widget-methods.md) {{ captcha-name }} на сайт. Он является публичным и указывается на той странице, где размещен виджет. +**{{ ui-key.yacloud.smartcaptcha.label_client-key }}** (`client_key`) используется для [добавления виджета](./widget-methods.md) {{ captcha-name }} на сайт. Он является публичным и указывается на той странице, где размещен виджет. -Серверный ключ (`server_key`) используется бэкендом сайта, чтобы получить [результат проверки](./validation.md#validation-result) запроса пользователя. Серверный ключ — приватный, поэтому храните его в надежном месте. Например, вы можете использовать для этого сервис [{{ lockbox-full-name }}](../../lockbox/). +**{{ ui-key.yacloud.smartcaptcha.label_server-key }}** (`server_key`) используется бэкендом сайта, чтобы получить [результат проверки](./validation.md#validation-result) запроса пользователя. Ключ сервера — приватный, поэтому храните его в надежном месте. Например, вы можете использовать для этого сервис [{{ lockbox-full-name }}](../../lockbox/). Одноразовый токен (идентификатор запроса) автоматически генерируется сервисом {{ captcha-name }} и используется при получении [результата проверки](validation.md#validation-result) запроса пользователя. Токен действителен пять минут. {% note warning %} -Никогда не пересылайте серверный ключ {{ captcha-name }}, не храните его в незашифрованном виде и не допускайте, чтобы он попал в открытый доступ. Если ключ все-таки оказался в открытом доступе, [создайте новую капчу](../operations/create-captcha.md) и замените ей старую. +Никогда не пересылайте ключ сервера {{ captcha-name }}. Храните его в надежном месте. Если ключ стал известен третьим лицам, [создайте](../operations/create-captcha.md) новую капчу на смену старой. {% endnote %} -Подробнее о том, как получить клиентский и серверный ключи, см. в разделе [{#T}](../operations/get-keys.md). +Подробнее о том, как получить ключи клиента и сервера, см. в разделе [{#T}](../operations/get-keys.md). ## Формат ключей {#key-format} -Клиентский ключ всегда имеет префикс `ysc1_`, серверный — `ysc2_`. Следующие 20 символов у них совпадают. +Ключ клиента всегда имеет префикс `ysc1_`, ключ сервера — `ysc2_`. Следующие 20 символов у них совпадают. Примеры ключей: diff --git a/ru/smartcaptcha/concepts/widget-methods.md b/ru/smartcaptcha/concepts/widget-methods.md index 1324a8ed14..f77d475843 100644 --- a/ru/smartcaptcha/concepts/widget-methods.md +++ b/ru/smartcaptcha/concepts/widget-methods.md @@ -35,7 +35,7 @@ description: Вы можете подключить виджет {{ captcha-name ```html
``` @@ -74,8 +74,8 @@ description: Вы можете подключить виджет {{ captcha-name
@@ -109,7 +109,7 @@ description: Вы можете подключить виджет {{ captcha-name const container = document.getElementById('<идентификатор_контейнера>'); const widgetId = window.smartCaptcha.render(container, { - sitekey: '<ключ_клиентской_части>', + sitekey: '<ключ_клиента>', hl: '<язык>', }); } @@ -147,7 +147,7 @@ description: Вы можете подключить виджет {{ captcha-name * `container` — контейнер для виджета. Можно передать DOM-элемент или идентификатор контейнера. * `params` — объект с параметрами для капчи: - * `sitekey` — [ключ клиентской части](./keys.md). + * `sitekey` — [ключ клиента](./keys.md). * `callback` — функция-обработчик. * `hl` — язык виджета. * `test` — включение работы капчи в режиме тестирования. Пользователь всегда будет получать задание. Используйте это свойство только для отладки и тестирования. @@ -306,7 +306,7 @@ description: Вы можете подключить виджет {{ captcha-name } window.smartCaptcha.render('captcha-container', { - sitekey: '<ключ_клиентской_части>', + sitekey: '<ключ_клиента>', callback: callback, }); } diff --git a/ru/smartcaptcha/operations/advanced-method.md b/ru/smartcaptcha/operations/advanced-method.md index b3d00c9cc2..d5c8969841 100644 --- a/ru/smartcaptcha/operations/advanced-method.md +++ b/ru/smartcaptcha/operations/advanced-method.md @@ -46,7 +46,7 @@ description: Следуя данной инструкции, вы сможете Где: * `<идентификатор_контейнера>` — идентификатор, сгенерированный на предыдущем шаге; - * `sitekey` — [ключ клиентской части](../concepts/keys.md); + * `sitekey` — [ключ клиента](../concepts/keys.md); * `hl` — [язык](../concepts/widget-methods.md#render) виджета и задания. В код callback-функции стоит добавить проверку существования объекта `window.smartCaptcha`, чтобы не вызвать ошибку в случае вызова функции до завершения загрузки JS-скрипта. diff --git a/ru/smartcaptcha/operations/create-captcha.md b/ru/smartcaptcha/operations/create-captcha.md index 98bc210c6c..89faa6683a 100644 --- a/ru/smartcaptcha/operations/create-captcha.md +++ b/ru/smartcaptcha/operations/create-captcha.md @@ -14,6 +14,8 @@ description: Следуя данной инструкции, вы сможете * Выбрать тип задания и сложность прохождения капчи. * Показывать разные варианты капчи в зависимости от параметров входящего запроса. Например, выбрать разную капчу для пользователей из разных регионов. +Мы рекомендуем создавать отдельные капчи для test, staging и production сред. В противном случае существует риск появления неточных данных из тестовой среды в [{{ monitoring-name }}](../metrics.md). + {% include [user-data-to-ml](../../_includes/smartcaptcha/user-data-to-ml.md) %} {% list tabs group=instructions %} diff --git a/ru/smartcaptcha/operations/get-keys.md b/ru/smartcaptcha/operations/get-keys.md index 531e3f00fb..b5739cf93f 100644 --- a/ru/smartcaptcha/operations/get-keys.md +++ b/ru/smartcaptcha/operations/get-keys.md @@ -1,6 +1,6 @@ # Получить ключи капчи -В этом разделе вы узнаете, как получить [ключи капчи](../concepts/keys.md). С помощью клиентского ключа вы можете [добавить виджет](../quickstart.md#add-widget) {{ captcha-name }} на свою страницу. Серверный ключ потребуется для [проверки ответа](../quickstart.md#check-answer) пользователя. +В этом разделе вы узнаете, как получить [ключи капчи](../concepts/keys.md). С помощью ключа клиента вы можете [добавить виджет](../quickstart.md#add-widget) {{ captcha-name }} на свою страницу. Ключ сервера потребуется для [проверки ответа](../quickstart.md#check-answer) пользователя. {% list tabs group=instructions %} @@ -11,6 +11,12 @@ 1. Нажмите на имя капчи или [создайте](../quickstart.md#creat-captcha) новую капчу. 1. На вкладке **{{ ui-key.yacloud.common.overview }}** скопируйте значения полей **{{ ui-key.yacloud.smartcaptcha.label_client-key }}** и **{{ ui-key.yacloud.smartcaptcha.label_server-key }}**. +{% note warning %} + +Никогда не пересылайте ключ сервера от {{ captcha-name }}. Храните его в надежном месте. Если ключ стал известен третьим лицам, [создайте](../operations/create-captcha.md) новую капчу и замените ею старую. + +{% endnote %} + - API {#api} Чтобы получить [серверный ключ](../concepts/keys.md), воспользуйтесь методом REST API [GetSecretKey](../api-ref/Captcha/getSecretKey.md) для ресурса [Captcha](../api-ref/Captcha/index.md) или вызовом gRPC API [CaptchaService/GetSecretKey](../api-ref/grpc/Captcha/getSecretKey.md). diff --git a/ru/smartcaptcha/quickstart.md b/ru/smartcaptcha/quickstart.md index 35fe12b67e..f671fbe4de 100644 --- a/ru/smartcaptcha/quickstart.md +++ b/ru/smartcaptcha/quickstart.md @@ -113,10 +113,17 @@ description: Следуя данной инструкции, вы сможете
``` -Для проверки токена нужно отправить POST-запрос на адрес `https://{{ captcha-domain }}/validate`, передав параметры в формате `x-www-form-urlencoded`: +Отправьте одноразовый токен на ваш бэкенд и выполните его проверку в течение пяти минут. -``` -secret=<ключ_сервера>&token=<токен>&ip= +Чтобы узнать результат проверки, отправьте POST-запрос на адрес `https://{{ captcha-domain }}/validate` с типом содержимого `x-www-form-urlencoded`: + +```text +POST https://{{ captcha-domain }}/validate HTTP/1.1 +Content-Type: application/x-www-form-urlencoded + +secret=<ключ_сервера>& +token=<токен>& +ip= ``` Где: diff --git a/ru/smartcaptcha/tutorials/mobile-app/website.md b/ru/smartcaptcha/tutorials/mobile-app/website.md index f503678629..60fa992e2a 100644 --- a/ru/smartcaptcha/tutorials/mobile-app/website.md +++ b/ru/smartcaptcha/tutorials/mobile-app/website.md @@ -2,6 +2,6 @@ canonical: '{{ link-docs }}/tutorials/security/mobile-app/website' --- -# Добавление HTML-страницы для работы {{ captcha-name }} +# Добавление HTML-страницы для работы {{ captcha-name }} в мобильных приложениях {% include notitle [website](../../../_tutorials/security/website.md) %} \ No newline at end of file