# 最佳实践

以下最佳实践是参考YCloud验证API编写的，重点描述了使用一次性密码（OTP）进行完整验证的过程。但是，无论您是否使用我们的服务，许多建议都适用。

&#x20;

## 验证、MFA 和 OTP

* 验证：一个通用概念，指通过各种手段确认用户的身份。
* 多重身份验证 (MFA)：包括双因素身份验证 (2FA) 和类似术语，要求用户提供两个或多个证据（或因素）才能访问网站或应用程序。可用于验证的因素包括账户密码、魔术链接、一次性密码（OTP）、生物识别（指纹、人脸等）、推送认证等。MFA 常用于登录和支付确认场景，作为一种验证手段。额外的安全措施。
* 一次性密码 (OTP)：一种特定的验证方法，被广泛认为是一种更安全的方法。它涉及通过短信、电子邮件、WhatsApp 或其他消息渠道发送包含验证码的消息。该代码的有效期很短，只能使用一次来验证单个登录会话或交易。

YCloud验证API提供了完整的OTP解决方案，包括消息发送和验证。您可以轻松集成短信、电子邮件、语音和WhatsApp渠道，快速实现应用内注册、登录和MFA。

&#x20;

## 常见验证案例

* 注册期间的身份绑定：验证通常是与用户建立在线关系的重要步骤。通过电话号码/电子邮件/社交媒体帐户验证用户身份，可以在确保用户安全的同时减少无效或虚假注册。
* 无密码登录：由于传统静态密码容易受到攻击，越来越多的企业转而采用OTP或基于社交媒体的登录验证，这为无需记住复杂密码的用户提供了更好的登录体验。这会减少登录过程中的摩擦并增加转化次数。
* 登录期间的多重身份验证：许多应用程序现在要求用户在输入密码后提供额外的验证因素，以增加额外的安全层。
* 帐户更改：每当用户忘记密码时，可以通过某种形式的验证来恢复帐户。
* 支付确认：支付过程中需要更高的安全性，尤其是在大多数金融应用中，用户在确认任何类型的支付交易之前都需要经过MFA。此外，如果您在欧盟运营，则需要通过提供额外的验证来遵守 PSD2。

&#x20;

## 平衡安全性和用户体验：

确保您添加的安全验证过程不会阻止用户实现其目标，无论是在注册还是完成交易期间。\
选择正确的验证渠道并设计高效、安全且经济高效的用户验证流程是国际企业面临的重大挑战。

## 选择正确的验证渠道

YCloud的验证API集成了多种发送OTP的渠道，可以快速集成：

* 短信
* Whatsapp
* 嗓音
* 电子邮件\
  每个渠道都有其自身的优点和缺点。根据最终用户所在国家/地区选择合适的验证渠道，例如在美国和加拿大，由于成本低、送达率高，使用短信作为优先验证渠道。在印度、印度尼西亚、越南等地，WhatsApp或Zalo等社交媒体可能更适合作为验证消息传递渠道，因为它们可以提高您的验证成功率并且更具成本效益。

一旦明确了首选验证通道，就可以考虑提供备用验证通道。如果使用短信作为主要验证渠道，至少要保证当用户无法接收短信时可以使用语音或WhatsApp作为备份。

另外，很多优秀的公司设计了支持多种验证渠道并让用户选择的验证流程。例如，TikTok支持短信验证、电子邮件验证和社交媒体验证。

> 📘[在 YCloud 验证 API 中了解有关不同验证通道的](/help-center/zh/integrations/qu-dao/verify-yan-zheng/yan-zheng-zui-jia-shi-jian/yan-zheng-tong-dao-xuan-ze.md)更多信息。

&#x20;

## 选择可靠的服务提供商

如果您的基础设施或消息传递通道不够安全，那么您的身份验证将不再安全。选择 YCloud 作为您的渠道提供商是一个明智的选择，因为它提供强大的安全性和可靠、快速的交付。

&#x20;

## 添加额外的验证选项

不可能知道用户在任何特定时间可能会遇到什么情况，例如忘记密码、丢失手机或在国外漫游。启动验证时，至少备份一种验证用户身份的其他方法。常见的组合包括：

* 密码+短信验证
* 短信验证+语音验证
* Whatsapp验证+短信验证
* 密码+邮箱验证

然而，每一个用户都来之不易，支持更多的验证组合可以减少真实用户在验证过程中的摩擦。

&#x20;

## 使用品牌名称作为消息传递渠道

通过 SMS 发送 OTP 消息时，在注册发件人时使用品牌名称或网站名称（而不是随机数字）尤为重要。这样可以给用户带来更大的安全感。

> 📘您可以在YCloud中[预先注册](/help-center/zh/integrations/qu-dao/quan-qiu-duan-xin/duan-xin-gong-neng/sender-id.md)每个国家/地区的发件人ID

&#x20;

## 使用适当的验证码长度

OTP 的复杂性取决于所使用的字符串，可以是字母、数字或两者兼而有之。一般情况下，OTP 的长度应在 4 到 10 位数字之间，以提供足够的安全性，同时保证流畅的用户体验。

&#x20;

## 验证码是消息内容的重点

每当向用户发送 OTP 消息时，验证码都应在消息中突出显示。确保代码位于消息的第一行，如果通过 Whatsapp 或电子邮件发送消息，请考虑将其加粗或突出显示。

&#x20;

## 使用本地用户可以理解的语言

虽然OTP消息的核心是一串字符，但有些用户可能仍然不明白其中的要点。YCloud verify提供多种语言的预置验证消息模板，确保消息符合当地法规，不会被运营商过滤。

&#x20;

## 提供重试验证码的逻辑

如果信道故障阻止用户正确接收验证消息，则用户可能想要发起“重试”。

但是，为了防止恶意请求或不耐烦的用户，我们建议添加验证请求间隔：

* 第一次重试间隔30秒
* 以指数方式增加后续重试的时间间隔或设置重试频率

这将有助于：

* 避免向用户发送重复的信息。
* 减少恶意攻击的可能性。

&#x20;

## 代码验证

向用户发送验证消息后，使用预先生成的代码验证用户输入的代码，并遵循以下建议：

* 设置验证码的有效期为5-10分钟。有效期满后不得再次验证。
* 每个验证码只能使用一次。验证后，在数据库中添加“已验证”标志。
* 限制验证码验证频率，抵御暴力攻击。\
  YCloudVerify预装了上述策略，并支持定制，您可以专注于您的业务，剩下的交给我们。

&#x20;

## 监控验证成功率

我们建议您实时监控验证的成功率。如果您发现在某些意想不到的国家/地区验证成功率迅速下降或突然上升，您应该密切关注，因为它可能来自某些恶意攻击者。

我们建议您设计一些触发警报，以在达到某些异常阈值时提醒您。YCloud verify内置安全警告触发器，您可以在界面上轻松配置，以接收异常警报。

&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://helpdocs.ycloud.com/help-center/zh/integrations/qu-dao/verify-yan-zheng/yan-zheng-zui-jia-shi-jian/zui-jia-shi-jian.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
