我为一个商业计划创建了一个Addin,我希望根据每年的订阅销售给客户。我一直在努力思考,无论如何,在安全和保护中验证我的插件的最佳方法是什么?方便的方式。
要求
环境
关注
我知道这是一个广泛的问题,但我也需要对此涉及的不同方面有广泛的答案。有人可以指导我什么是一个很好的设置,或指导我到一个描述这个的网站?人们会认为这很典型..我找不到任何东西。
答案 0 :(得分:2)
多次尝试/离线工作的问题可以通过例如为插件请求发出令牌("临时"密钥)来解决,该请求在有限的时间内有效(例如,1周)。因此用户获得了宽限期" 1周,当他可以工作"离线"。如果在这段时间内,插件将无法连接到互联网以获得更新的令牌,那么它会阻止自己直到获得新令牌。示例 - 具有"宽限期"的office 365一个月。
即。在可能的情况下,addin向许可证服务器发送包含一些唯一用户ID的请求(如您提到的应用程序URL或任何唯一标识客户端的内容),服务器搜索您的许可证数据库并发回包含许可证结束日期的(加密)令牌和所需的令牌刷新日期(当前服务器日期+ 1周)
要进行加密,我认为您应该选择"私钥/公钥设置" ..为什么要避免这种情况 - 它似乎很有意义,而且并不难实现以.NET为例。即使用私钥/公钥,您至少可以确保没有人能够模仿"您的服务器,只要您将私钥保密在许可证服务器上即可。
另外,请注意,当破解插件本身(它是一个.NET代码,对吗?)时,可能没有人会破解加密通信。我认为这种担忧可能无法解决,而且可能是最大的问题。即恶意用户只需删除您的插件代码中的许可证检查即可。但无论如何,这假设用户至少有一些破解程序代码的经验。
还有一个考虑因素 - 如果您不打算自己出售插件(例如,处理客户订单,信用卡,进行欺诈检查等),您最好选择一些"电子商务"合作伙伴公司,专门销售在线软件,如paypro,avangate,bluesnap,2checkout等。它可能已经有许多预先定义的(固定)许可机制/选项。