假设有一个程序,是以卖序列号的方式盈利的,每个序列号可以装在5台电脑上。
每次安装的时候,输入序列号之后,安装程序会发一个请求到某个服务器地址,请求中会包含序列号,
如果服务器验证序列号通过的话,就会给剩余可安装次数减一,并返回一个验证通过的标记,安装包程序接收到这个
标记之后才会继续安装,如果返回的是验证失败的标记的话,则安装包程序退出,安装失败。
相应的,在一台电脑上卸载这个程序的时候,安装包程序也会自动发一个请求到服务器,服务器验证通过的话会给可安装次数加一。
现在就面临一个问题,假设某个用户在卸载的时候用某个http监视工具获取到了请求地址,那么他就可以在装满五次之后执行
这个请求来冒充卸载的过程,这样这个序列号就又可以装在别的机子上了。
如何防止用户模拟卸载呢?
一般情况它是可以随便装的,只是在使用的时候按照你那种方式来验证。
数据库存储可以不用以+1形式,可以存五条信息,每个信息有一个机器码。安装和删除的时候都需要发送机器码,对应的机器码删除对应的安装信息,每个序列号只能对应五条安装信息。
在Astar的基础上补充点:
你可以对机器码进行加密后在发送到服务端,服务端进行解密后在执行你操作。如果解密成功说明这个信息是合法的,否则就忽略吧。当然这个加密的程序需要好好的考虑下了。
没必要吧,最好不要在安装包上做文章,针对产品本身授权就可以了,每个授权号都记录服务器上,用服务器激活方式,激活一次即可;