各位 V2EX 的大佬们,小弟我在做个在线视频的小项目,就是怎么解决一个账号被多人异地使用的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yangva
V2EX    编程

各位 V2EX 的大佬们,小弟我在做个在线视频的小项目,就是怎么解决一个账号被多人异地使用的问题

  •  
  •   yangva 2019-02-20 18:32:25 +08:00 6185 次点击
    这是一个创建于 2444 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就是比如我有个这个平台的账号,这个账号是 VIP 账号,可以看全站的视频。 很有可能这个 VIP 账号的拥有者会卖给其他人,其他人就不用充 VIP 直接看全站视频了。 类似那种在线教育平台的感觉,只有买了课程的才可以看,但是有可能这个账号会被多人使用 这个问题怎么解决呢? 小弟我是自己琢磨不透,我想过用 IP 限制,但是国内的 IP 都不太固定的;想过用地区限制,也保不齐这个人突然换个地方啊;想过用 mac 地址绑定,这个我不知道怎么实现,不知道难度大不大;然后就没有其他更实用的想法了

    刚接触开发没多久,还望各位大佬抽空为小弟我解惑

    53 条回复    2019-05-02 11:59:22 +08:00
    mf2019d
        1
    mf2019d  
       2019-02-20 18:36:23 +08:00 via iPhone   1
    session 吧

    我是外行
    9hills
        2
    9hills  
       2019-02-20 18:37:45 +08:00 via iPhone   1
    同一个帐号只能同时播放一个视频就好了,每次播放前验证
    jiangnanyanyu
        3
    jiangnanyanyu  
       2019-02-20 18:39:09 +08:00 via Android   1
    qq 异地登录也可以是正常的。腾讯怎么处理的呢?反正不能同时同一个账号登录
    zidian9
        4
    zidian9  
       2019-02-20 19:18:18 +08:00   4
    用户每次登录的时候生成一个 accessToken,给用户,放到 cookie 里,以后每次请求网络,都拿 accessToken 来验证身份。
    如果用户在别的地方登录,把老的 accessToken 就失效,只有新的 accessToken 有效,就可以保证用户单点登录。
    同理,可以规定同时有效的 accessToken 数量,就可以控制用户可以同时最多在几个地方保持登录状态。
    AngryPanda
        5
    AngryPanda  
       2019-02-20 19:21:14 +08:00 via Android   1
    不让同时登录就好了。
    yangva
        6
    yangva  
    OP
       2019-02-20 19:52:38 +08:00 via Android
    @jiangnanyanyu 嗯,不是要同时登录,主要就是别让多个人使用这个账号,如果限制同时登录,这几个人可以协商分时段登录使用的吧
    yangva
        7
    yangva  
    OP
       2019-02-20 19:53:08 +08:00 via Android
    @9hills 嗯,感谢老哥,我想想你说的这个怎么实现
    yangva
        8
    yangva  
    OP
       2019-02-20 19:56:41 +08:00 via Android
    @zidian9 感谢老哥,你这个想法非常妙,小弟佩服,可以保证同一个时刻只能一个人使用。不过还是那个问题,这几个人可以协商下,分时段登录使用,这个问题怎么解决,还望老哥有时间解答
    jadec0der
        9
    jadec0der  
       2019-02-20 20:01:45 +08:00   1
    没办法在不伤害用户体验的情况下用技术手段解决,你看优酷腾讯爱奇艺,共用会员造成的损失一年至少几个亿吧,不也忍了吗
    yangva
        10
    yangva  
    OP
       2019-02-20 20:05:59 +08:00 via Android
    @jadec0der 嗯,老哥你说的这个确实是个问题。主要我之前看到个一个在线教育平台就是有这种策略,想着也这么做下试试
    zhou00
        11
    zhou00  
       2019-02-20 20:08:00 +08:00   1
    楼上说的是,我的爱奇艺会员不知道给多少人用了,朋友买的网上课程账号给我依然可以看,共享的一般也就比较近的人,如果你的用户比较多的话,真要想看 VIP 还都是会自己付费的
    chinvo
        12
    chinvo  
       2019-02-20 20:08:30 +08:00   1
    @yangva #6 协商共用的问题,记录登陆日志,包含登陆 IP 和 地点(用 GeoIP 之类的),然后程序判断异常登陆锁定账号就是了
    FakeLeung
        13
    FakeLeung  
       2019-02-20 20:09:56 +08:00 via Android   1
    我的想法是,生成一个 token,一个用户只有一个 token,这样,新登录的就会把以前登录的挤掉。


    前端一枚,瞎说的。
    yangva
        14
    yangva  
    OP
       2019-02-20 20:12:38 +08:00 via Android
    @zhou00 嗯嗯,确实是这样
    yangva
        15
    yangva  
    OP
       2019-02-20 20:13:34 +08:00 via Android
    @chinvo 感谢老哥提供思路,我想想这个异常怎么判定
    sucai
        16
    sucai  
       2019-02-20 20:14:19 +08:00   1
    楼上很多老哥好像想歪了,楼主是要解决控制用户无法多地区多人登录问题,而不是一个用户登录挤掉另一个什么的
    jadec0der
        17
    jadec0der  
       2019-02-20 20:14:30 +08:00
    @yangva 如果是网课的话,我建议你增加在线作业之类的东西,提高自己平台的价值。否则就算你用麻烦的方案(比如硬件加密狗)防止了共用账号,也防不了别人录屏打包卖。
    yangva
        18
    yangva  
    OP
       2019-02-20 20:15:16 +08:00 via Android
    @FakeLeung 嗯嗯,感谢老哥,楼上老哥用 accessToken 跟你说的应该是同一个思路
    yangva
        19
    yangva  
    OP
       2019-02-20 20:17:27 +08:00 via Android
    @jadec0der 嗯嗯,视频加密了的,上面有个人账号的水印,现在的好多都是这么做的,录播的视频传开了的话是可以查到是谁录播的
    yangva     20
    yangva  
    OP
       2019-02-20 20:19:21 +08:00 via Android
    @sucai 嗯,感谢老哥回复,是这样的
    honeyshine75
        21
    honeyshine75  
       2019-02-20 20:50:44 +08:00
    @yangva 给你的水印上加上马赛克你怎么查?
    Kilerd
        22
    Kilerd  
       2019-02-20 20:56:09 +08:00 via iPhone
    GEOIP 做限制就好了
    yangva
        23
    yangva  
    OP
       2019-02-20 21:05:33 +08:00
    @honeyshine75 确实可以加马赛克,不过这个水印是随机在屏幕各处出现的,如果要加马赛克的话处理也要很久的,就看盗录的人的毅力了
    yangva
        24
    yangva  
    OP
       2019-02-20 21:06:05 +08:00
    @Kilerd 嗯嗯,感谢回复,楼上有老哥说过了
    hilbertz
        25
    hilbertz  
       2019-02-20 21:18:39 +08:00
    客户端绑定硬件,根据硬件生成秘钥,上传到服务器,但问题是,你的内容是否真的这么值钱
    bulldozer
        26
    bulldozer  
       2019-02-20 21:19:52 +08:00
    最简单的办法就是动态密码,发短信给某一个手机。如果他们还能 share,那就算了
    yangva
        27
    yangva  
    OP
       2019-02-20 21:22:25 +08:00
    @hilbertz 嗯嗯,感谢老哥回复,这个确实需要再三考虑
    yangva
        28
    yangva  
    OP
       2019-02-20 21:22:56 +08:00
    @bulldozer 嗯,这也是个方法,感谢老哥回复
    rootx
        29
    rootx  
       2019-02-20 21:28:11 +08:00 via iPhone
    只做微信授权登录 加 单点登录
    yangva
        30
    yangva  
    OP
       2019-02-20 21:30:36 +08:00
    @rootx 微信授权,这思路也可以,感谢老哥
    mystrylw
        31
    mystrylw  
       2019-02-20 21:44:56 +08:00   1
    我在用的一个网站是账号限制 ip 段前两位 奈何我这里 ip 天天变 每次用几乎都要打电话给客服改 ip 段 干脆不用了

    微信认证是个好办法 腾讯音乐就是这么认证的
    yangva
        32
    yangva  
    OP
       2019-02-20 21:46:55 +08:00
    @mystrylw 对啊,国内的公网 ip 都经常变的,不过所在的区域一般不会变
    kY8mbXW833Lu28xn
        33
    kY8mbXW833Lu28xn  
       2019-02-20 21:48:41 +08:00 via Android
    @AngryPanda 你是要笑死我,然后继承我的财产
    yufeng0681
        34
    yufeng0681  
       2019-02-20 22:49:38 +08:00
    和业务期望有关
    1、期望是一个人登录,那就不能保证人是不是换了,那就只能增加确认人身份的步骤(会降低用户体验),比如你提高风控标准,识别用户可能换人了, 你就开始出几个提示问题,让用户来回答,比如短信通知下发一条让用户确认,比如让用户选择,自己上一个登陆的设备,上一次使用 APP 的日期(选择题),这样就能把不同的人识别开,让他们用得比较痛苦。相信两个不坐在一起的人,这些手段都会让他们很受折磨;
    2、期望是一个设备登录,可以获取手机的唯一标识,mac 设备 id, 苹果也有开放唯一 id 供 app 读取(虚拟的)
    learnshare
        35
    learnshare  
       2019-02-20 22:55:44 +08:00
    登录状态唯一即可。保存一下当前账号的登录状态,再次登录把之前的状态禁用
    accessToken 是一种常见的方式
    renmu123
        36
    renmu123  
       2019-02-20 23:02:59 +08:00 via Android
    比如判断两次登录的 ip 地址是否在同一城市,这样稍微能防一点
    hellojinjie
        37
    hellojinjie  
       2019-02-20 23:12:22 +08:00
    前面楼说的只做微信登陆,绝对是妙招。你会出借账号,但估计你决定不会出借微信账号吧。
    Ryetor
        38
    Ryetor  
       2019-02-20 23:24:15 +08:00 via Android
    @hellojinjie 登微信扫码吗…这也不行啊
    hyyou2010
        39
    hyyou2010  
       2019-02-20 23:38:54 +08:00
    这个是不可能绝对解决的,只能增加麻烦度。发短信验证,绑定微信都可以。就算你扫脸,卖账号的人同时发一张照片也能解。
    Junn
        40
    Junn  
       2019-02-20 23:39:25 +08:00 via iPhone
    不允许同时登录就不说了。另外记设备和 ip,两者同时改变则短信验证,短时间经常改变则禁止登录提示修改密码再登录
    hyyou2010
        41
    hyyou2010  
       2019-02-20 23:42:57 +08:00
    我突然想到了一个比扫脸级别还高点的办法:验证声音。
    Junn
        42
    Junn  
       2019-02-20 23:50:16 +08:00 via iPhone
    @hyyou2010 芝麻认证了解一下,可以在设备和 IP 同时改变时调用芝麻快捷认证
    hyyou2010
        43
    hyyou2010  
       2019-02-20 23:56:35 +08:00
    @Junn 谢,刚搜到正在看,这个的确厉害: https://docs.alipay.com/mini/introduce/zm-verify
    yangva
        44
    yangva  
    OP
       2019-02-21 00:17:54 +08:00 via Android
    @yufeng0681 感谢老哥,你这个逻辑推论不错,我到时候试试
    yangva
        45
    yangva  
    OP
       2019-02-21 00:26:55 +08:00
    @hyyou2010 感谢老哥回复,老哥你说的这个扫脸验声的就上升到一个高度了,还不至于这样,我也研究过网络安全相关的,了解过这方面的
    guoyida
        46
    guoyida  
       2019-02-21 06:11:59 +08:00 via iPhone
    搜一下金盾视频加密,还有很多类似的软件,根据电脑生成机器码
    zidian9
        47
    zidian9  
       2019-02-21 10:05:27 +08:00
    @yangva 这实际上不是一个技术问题,这是一个业务问题。可以尝试从业务规则上解决。
    还有,我录屏放到百度贴吧,上面虽然有我的账号水印,但是不能说明是我传播的吧,比如我把账号密码贴在百度贴吧(合法),别人录屏传播。
    严格意义上的 [视频只给买的人看] 实际上做不到,除非 [做视网膜识别,该视网膜看到的是教学视频,其余视网膜看到的是广告] ,否则,我线下把朋友叫到咖啡厅,让他在我的手机上观看视频呢?

    根据你的业务有不同的解决方案,比如视频总量 1000 分钟,充钱 10 元能观看 2000 分钟 类似
    你要是搞个 VIP 就能看全站视频,账号肯定要被租借的
    Cloutain
        48
    Cloutain  
       2019-02-21 11:49:11 +08:00
    如果是 WEB 端,重要的是保证不被盗录 [随机飘 ID] ,其他的手段太影响用户体验了
    yangva
        49
    yangva  
    OP
       2019-02-21 13:46:39 +08:00
    @guoyida 嗯嗯,好的谢谢,我们用的另一个类似的
    yangva
        50
    yangva  
    OP
       2019-02-21 13:47:22 +08:00
    @zidian9 好的,非常感谢老哥耐心解答
    yangva
        51
    yangva  
    OP
       2019-02-21 13:48:35 +08:00
    @Cloutain 对对,就是随机显示,随机移动个人 ID 号的
    Hardrain
        52
    Hardrain  
       2019-04-06 16:27:33 +08:00 via Android
    browser fingerprint 配合 IP 了解下
    不过如果倒卖者起个代理服务器,再把看你视频的环境弄进一个虚拟机,照样能一号多用。而且 User-Agent(用户代理,包括但不限于同名的 HTTP header)提供的信息完全一样,似乎无法分辨。
    yzg9540
        53
    yzg9540  
       2019-05-02 11:59:22 +08:00
    微信手机号也想过,用户安全感太差

    我现在的就是登录时 获取 ip 地址 浏览器 手机电脑系统等
    accessToken+异地登陆警告+输出异地次数

    后台手动操作查看
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5540 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 06:31 PVG 14:31 LAX 23:31 JFK 02:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86