# 最佳实践

以下最佳实践是参考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 中了解有关不同验证通道的](https://helpdocs.ycloud.com/help-center/zh/integrations/qu-dao/verify-yan-zheng/yan-zheng-zui-jia-shi-jian/yan-zheng-tong-dao-xuan-ze)更多信息。

&#x20;

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

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

&#x20;

## 添加额外的验证选项

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

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

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

&#x20;

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

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

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

&#x20;

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

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

&#x20;

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

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

&#x20;

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

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

&#x20;

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

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

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

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

这将有助于：

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

&#x20;

## 代码验证

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

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

&#x20;

## 监控验证成功率

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

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

&#x20;
