给无网内部电脑开发程序的包月收费问题,得如何设计验证方式才能确保用户们交费呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
meatball

给无网内部电脑开发程序的包月收费问题,得如何设计验证方式才能确保用户们交费呢

  •  
  •   meatball 2019 年 6 月 28 日 2741 次点击
    这是一个创建于 2491 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前正在给一个单位开发他们工作使用的工具软件,期望可以通过按月收费的方式赚取一些收入,但他们使用的电脑只用内网可以访问,无法做服务器验证,那得如何设计验证方式呢,目前有几个想法,但都有问题。

    想法 1:因为他们在使用这个软件的时候都有一个独一无二的用户名,这个用户名是他们单位下发的,自己改不了,而且用这个软件就得用,所以想的是结合每个人的用户名和到期时间生成一个验证码,得输入这个验证码才可以进入软件,这个验证码可以从我这买,但这个办法可以分分钟通过修改电脑时间的方式破解掉啊。

    我总结了一下难点,难点在于按时间收费就必须对比时间,而在一个内网电脑上可以对比的只有系统时间,那更改系统时间的办法理论上可以破掉一切办法啊,求大佬们支支招~

    6 条回复    2019-06-28 23:40:19 +08:00
    jameskuk
        1
    jameskuk  
       2019 年 6 月 28 日
    简单的实现,每次开机记录时间,时间只能比上一次自己记录的往前。
    时间往后的话,直接抛错锁定,让重新申请激活码激活。
    激活码中带生成时候的时间戳,验证激活码是否在往后推的几天(激活码有效期)内,确保激活时在一个可接受的误差时间内就行。
    meatball
        2
    meatball  
    OP
       2019 年 6 月 28 日
    感谢大家的回答,另外还有一点忘说了,关于记录时间或者记录别的的事儿,就是用 python 生成二进制文件来做记录是否可行,是不是得先设计一种加密方式,加密之后再用二进制方式存储才足够安全?
    v2hub
        3
    v2hub  
       2019 年 6 月 28 日   1
    可以改进 1 楼的方法,这个软件开机就常驻一个进程,这个进程被结束就锁定软件。这个进程只要运行就记录当前电脑时间,然后进行 1 秒+1,关机的时候就可以得到关机的正确时间。然后下次开机的时候拿电脑时间和这个结束时间对比如果小说明改时间了,锁定就好了。
    laozhoubuluo /td>
        4
    laozhoubuluo  
       2019 年 6 月 28 日   1
    刚才您提到说有用户名,也可以考虑一些有限的服务器验证手段,比如任何服务器请求(登录等)都需要提交时间戳,服务器和客户端时间不一样会导致请求失败。
    再配合上楼上说的记录时间,不允许时间可逆的方式,基本可以做到拿到准确的时间了,因为正常企业不会为了一点授权费来回重装服务器和客户端的。
    更绝的方法是服务器请求提交用时间戳加密。亦或者业务流程嵌套时间,时间错乱会导致客户端或服务端死锁。
    meatball
        5
    meatball  
    OP
       2019 年 6 月 28 日
    @v2hub 常驻进程的想法估计不行,单位领导也不能同意,谁知道你那个进程还干啥了
    meatball
        6
    meatball  
    OP
       2019 年 6 月 28 日
    @laozhoubuluo 用户名是他们内网用来登录的,内网的服务器权限我拿不到,所以没法用服务器验证。感谢帮助
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3929 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 391ms UTC 04:18 PVG 12:18 LAX 21:18 JFK 00:18
    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