安全 类似于 Google 二次验证的服务是如何做的?

lufeihaidao · July 07, 2014 · Last by lufeihaidao replied at July 08, 2014 · 4156 hits

逻辑:

当登录的时候,判断该设备是否曾经登录过。如果是,允许登录;否则,需要通过手机验证之后才能登录

主要分为两块:

  1. 设备唯一性的识别:手机有设备 ID,比较方便,PC 一般是怎样标识唯一性的?UA IP 都不靠谱,普通的 cookie 受限于浏览器。stackoverflow 上说到 Google 使用 flash cookie 结合 local shared object。有人这样做过吗?

  2. 手机验证,国内有没有比较安全的提供手机验证的工具和平台?(相对于 Google 的 APP 二次验证,手机验证码验证可以少安装一个 APP)

我注意到,用 steam 登录的时候,如果从未使用该 PC 登录过,会要求你邮箱验证。但当我在网吧登录过一次之后,再次去这家网吧就可以直接 steam 登录了,它是如何识别我的?

----------------------------------------------------------更新分割线---------------------------------------------------------------

代码基本完成了。已有问题是这样解决的:

  1. 用 cookie。移动端则是设备 ID 号
  2. 暂时不用手机 APP 验证,而采用短信验证

相关的设计见我的博文:短信验证的设计

这个 Gem 建议你研究一下:https://github.com/mdp/rotp

我注意到,用 steam 登录的时候,如果从未使用该 PC 登录过,会要求你邮箱验证。但当我在网吧登录过一次之后,再次去这家网吧就可以直接 steam 登录了,它是如何识别我的?

细思恐极,网吧的系统应该都是无盘的吧……怎么识别的你?难道还是说 Steam 是判断你的登录地区,该地区的第一次登录需要验证,然后后面的就不需要了?然后如果超过一定时间,比如三个月没有登录,又重新需要验证?

#1 楼 @lgn21st 浏览了一下似乎有点复杂,我研究一下。 #2 楼 @chunlea 我猜是因为网吧的对外 IP 是固定的原因

#3 楼 @lufeihaidao 其实只有两个参数 一个自动生成的随机 Token 和当前时间。。

#4 楼 @iBachue 呃这个是什么?唯一 ID 还是 steam 的验证方法?

这个唯一的 ID 肯定是可以后台生成交给浏览器的,但是谁来存储它呢?cookie 受限于浏览器,换了浏览器就不认识了

#5 楼 @lufeihaidao 我说的是 Google 二次验证啦 Steam 那个 我猜根本没这么复杂。。你们太高估人家了。。

即使是 Google 也只是通过 Cookie 或类似的东西来判断你以前是否登录过的,因为我的浏览器关掉就删 Cookie,所以每次登录 Google 都要重新二次验证。互联网的技术没那么复杂,就这么点东西而已。。

You need to Sign in before reply, if you don't have an account, please Sign up first.