关于 .NET C/S客户端远程加密与验证,求助!
问题描述:
有时候给客户做的C/S客户端程序,启动时要进行一次时间有效性验证,比如:超2019年1月1日后,软件将不在运行,并友好的提示用户!
已知:
A:每个软件在提供给客户时,已写入了一个固定的SYS_GUID,做为此客户端的唯一标识,也用于将来检测此GUID的远程信息时使用的主Key
B:客户端软件在有万维网环境中,绝对可上网,网络有效性不需要讨论
现在做法:
1、.NET C/S客户端程序已进行混编加密(防反编译)
2、在远程Web服务器上建立一个WebAPI接口,客户端启动时,通过调用API接口,传入SYS_GUID,API接口在数据库中查询SYS_GUID,根据结果,生成可供返回相关信息的JSON,客户端解析JSON,判断出软件的有效性,若已失败,直接提示退出,有效,正常运行。
3、为了访问的终生有效,Web API通过顶级域名进行访问,顶级域名,通过A记录指定固定主机(已测试通讯正常)
问题:
这种方式能否防止别人拦截与破解?或者是否安全及有效,通过WebAPI接口返回验证结果只需要100毫秒左右,这个不是问题。最初想法是想本地查询远程SQL Server数据库,返回结果,这样,数据库的连接在本地,不安全,同时,一旦数据库连接泄漏,就非常危险了。