移动 APP 端与服务器端用户身份认证的安全方案


公司的 mobile app 是外包给其他公司做的,所以现在他们需要我们提供 API 接口进行调试,由于没有 API 开发的经验,所以现在一个比较难把握的问题就是如何实现服务器端与移动 APP 端通信时的用户身份认证问题。
搜集了一些资料,大部分的建议是在服务器端生成一个 token 然后在通信报文的 headers 利用这个 token 来进行验证。
这里有两个问题,首先这样直接生成 token 进行认证的安全性。其次,生成的 token 应该怎么保存呢?存在 DB 里面还是哪个地方?(服务器端使用的是 php )

因为本身产品对安全性要求不是特别高,远没有达到网银之类的需求,所以在不考虑使用 oauth 等授权协议基础上,我比较希望知道一些常用的身份验证机制,以保证基本的安全性即可。

再把问题写清楚点:
1.怎么生成安全性比较高的 token
2. token 需不需要设置过期时间(考虑到是 mobile app ,所以这个比较难设计,因为很少
有人会在 app 上会 log out 再重新登录)。
3. token 除了存在 db 内,有没有一些更方便合适的方式。

mobile app 安全 php server

微笑的迪妮纱 11 years, 7 months ago
  1. APP里预埋一个token,结合时间戳/每次请求的一个随机值randstr,生成一个最终signature,在Server进行验证即可,(安全级别不是很高,但防大部分恶意请求没问题了)。
  2. 如果还需要针对不同用户生成不同的sigature,可以结合手机的DeviceId,在首次请求是上报这个,以后的请求就把DeviceId也作为因子带入sigature的生成里。当然,这个过程也不是绝对安全的。

看你的意思是不需要绝对安全的,所以猜测你的目的是防恶意请求的,以上两种方式应该可以满足了。

旋转的小蓝帽 answered 11 years, 7 months ago

Your Answer