如果不需要用户登录认证,服务器如何辨别每一个用户? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jimisun
V2EX    问与答

如果不需要用户登录认证,服务器如何辨别每一个用户?

  •  
  •   jimisun 2020-11-18 15:01:11 +08:00 2202 次点击
    这是一个创建于 1864 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有这样一个需求,给店面提供一个抽奖功能的 H5 单页面,用户打开这个页面就是一个类似转盘抽奖的活动。 这个单页面很简单,进来就是抽奖,这个单页面也仅仅是一个单页面和 Java 程序服务器互通。

    问题来了,由于用户不需要登录,用户点进来就开始抽,抽不中退出去再进来再抽,直到抽中为止。

    想了几种方案都不足以保证安全,分别如下。

    1. H5 页面的 session 中生成唯一 ID ( PS:用户可以清缓存)
    2. 用户在打开页面的时候将设备和 IP 信息发送到服务器风险控制接口评分(但是 IP 实际上总是变动)
    3. 原本有页面生成的唯一 ID 由服务器根据 IP 和设备信息生成唯一 ID (还是上面的 IP 变动问题)
    4. 抽奖前先上用户输入手机号(没法发验证码,而且发验证码增加了用户的等待时间),会导致用户不停的输入新手机号码抽奖,直到抽中为止,然后告诉我们店家手机号输错了(我们这个活动没那么严格)。

    对于这种简单的场景,应该怎么来实现这个功能呢? 还是我的大方向错误了,这个流程有更正确的方式呢?

    20 条回复    2022-06-22 09:42:23 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       2020-11-18 15:14:17 +08:00
    可以凭消费的小票(或电子单号)参加抽奖,反正一次消费只能当作一个身份,想多要一个身份就要多消费,不怕被刷。

    如果想让不消费的顾客也能参与,可以在领奖时要求确认电话号码,每个电话号码只有一次领奖机会,后续就算中奖也不能领奖,这也能避免被刷。结合别的防刷技术,有能力破解的人本来就少,就算现场有这样的人,他也只能为少量几个手机号码作假,影响不大。
    hotsun168
        2
    hotsun168  
       2020-11-18 15:14:20 +08:00
    无后端验证的方式永远不可能 100%避免用户伪造提交。所以比较安全的方式应该是验证码或微信登录。
    以成本方式考虑,如果送出去的礼品价值超过发短信和构造微信后台的成本,那么最好还是做后端验证。
    cmdOptionKana
        3
    cmdOptionKana  
       2020-11-18 15:17:58 +08:00
    还可以限定一台设备,专人守着让顾客排队上来抽奖,一般人也不好意思 /没时间多次排队。
    BBrother
        4
    BBrother  
       2020-11-18 15:28:27 +08:00
    以前做的时候选的方案 1,因为一般用户不会清缓存,会清缓存的用户也知道自己在做什么,再说活动没那么严格
    murmur
        5
    murmur  
       2020-11-18 15:29:37 +08:00
    浏览器指纹 配合 IP 一些做风控 只能这样了 手机号这个不想 极验想必你也不会上是吧?
    jimisun
        6
    jimisun  
    OP
       2020-11-18 15:30:08 +08:00
    @cmdOptionKana 活动并不是在店里面的,而是主要发送给微信好友的 H5 网页,不用消费,现在我能想到的就是提供手机号再结合一定的防刷技术配置,但是这样影了用户体验,用户在别人转发的朋友圈点开后就想简单抽个奖,现在用还要在抽奖前提供一下手机号,这样一定程度上影响了用户的积极性。所以想征求下大家有没有我忽略的更好的 IDEA

    @hotsun168 现在是后端生成的抽奖页面,就是一个 H5 网页,没有对接微信登录,短信验证码都在很大程度上影响了想要的效果。用户打开就是想简单抽个奖,抽不中就算了,抽中了就要到我们店面来领东西消费。促进消费的一种活动。
    linauror
        7
    linauror  
       2020-11-18 15:31:45 +08:00
    对接一下微信获取 openid,这个过程是无感知的,仅仅获取 openid 不需要用户手动同意
    jimisun
        8
    jimisun  
    OP
       2020-11-18 15:37:23 +08:00
    @BBrother 该限制还是要限制的,最低送一桶油什么的,部分刷客一直会清缓存清到中为止。

    @murmur 极验产品很不错,预想这尽量避免手机号验证这一样 很小的门店做一些线上活动 而且活动的奖品什么的都是杯子啊,油 成本不高
    jimisun
        9
    jimisun  
    OP
       2020-11-18 15:39:26 +08:00
    @linauror 是的这个考虑过,但是还有一部分市场是不仅仅在微信,我们的门店可能将这个抽奖页面投放到各大论坛什么的。
    jimisun
        10
    jimisun  
    OP
       2020-11-18 15:45:12 +08:00
    @linauror 好像想要获取 openid 需要中间有公众号的交互才能获取吧 我这个可能就是一个 H5 的网页 发在朋友圈 或者微信消息之中
    9151
        11
    9151  
       2020-11-18 15:45:29 +08:00
    不能读取网卡地址吗?
    ArthurSS
        12
    ArthurSS  
       2020-11-18 15:46:33 +08:00
    jimisun
        13
    jimisun  
    OP
       2020-11-18 17:26:35 +08:00
    @ArthurSS 非常感谢提供思路,刚才搜索了一下,非常棒,但是我 demo 会经常变动在同样设备的不同时间上,请问有稳定的 fingerprintjs 示例吗?
    ArthurSS
        14
    ArthurSS  
       2020-11-18 17:53:34 +08:00
    @jimisun 付费版不知道是不是会好一点,我也是才知道竟然出了付费版
    keepeye
        15
    keepeye  
       2020-11-18 18:01:42 +08:00
    微信网页授权不行吗
    fmumu
        16
    fmumu  
       2020-11-18 19:09:26 +08:00
    微信网页授权,无感知的
    jimisun
        17
    jimisun  
    OP
       2020-11-18 20:56:35 +08:00
    @keepeye
    @fmumu 微信网页是不是需要中间跳转公众号之类的才能获取的到呢?
    @ArthurSS 是啊 刚才看了一下需要付费 从网上 demo 了一下 很随机
    keepeye
        18
    keepeye  
       2020-11-19 10:07:09 +08:00
    @jimisun 静默授权就能拿到 openid 用户无感知
    Alekseyevich
        19
    Alekseyevich  
       2022-06-18 22:52:38 +08:00
    浏览器指纹有了解过么,后来怎么解决的呢?
    zenxds
        20
    zenxds  
       2022-06-22 09:42:23 +08:00
    fingerprintjs 早的时候用过,采集的信息稍微一变就变了,我还提 issue 了,官方解释就是这么设计的,后面就没再用了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2691 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 11:48 PVG 19:48 LAX 03:48 JFK 06:48
    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