# 无状态阶段

无状态阶段,主要是用户还未登录时,可能要传像手机号、用户密码、短信验证码、人脸验证数据等,这些敏感数据在传输时,光靠SSL还是不够的,还需要进行再加密处理。

# 客户端传服务端

为了防篡改,客户端会持有服务端的公钥,用于服务端响应数据时,验证数字签名,所以我们可以利用这个公钥,将敏感数据进行加密后,再通过接口传给服务端。

当然,也可以另外使用其它的公私钥对来进行加解密。

# 服务端传客户端

此阶段,客户端是不可信的,所以尽量不要从服务端传敏感数据给客户端(登录接口除外)。

# 有状态阶段

有状态阶段,用户已经登录了,此时客户端已从不可信转为可信。

# 客户端传服务端

与无状态阶段一样。

# 服务端传客户端

用户在登录时,已经把可信的用户公钥传给服务端了,所以后续服务端传敏感数据给客户端,就可以使用用户的公钥进行加密。

# 脱敏

对于非用户自身的敏感数据,严格来说,是不可以发送给客户端的,比如用户A由于业务需要,需要查看用户B的手机号,通常的做法是不显示用户全部的手机号,只显示类似186 **** 9503这样的数据。

# 敏感数据Hash

如果业务需要,用户A需要使用用户B的手机号来调用接口,此时我们不能直接把用户B的手机号给用户A,可以把用户B的手机号的MD5值(或其它摘要算法计算的值)给用户A,然后用户A用这个HASH值去调用接口,效果是一样的。