如何通过Web应用程序在客户端计算机上存储SDF文件?

时间:2012-01-05 10:24:25

标签: web-applications sql-server-ce asp.net-4.0

我需要为您的网络应用程序提供宝贵的意见。

问题是,我需要存储一个SDF数据库,以便我可以跟踪用户在哪台机器上激活产品。如果用户在机器A上激活了产品,我必须将产品密钥存储在该机器上。

如果他试图用另一台机器B访问它,我需要阻止访问该程序。

PS:

我希望在客户端计算机上存储数据库的原因是一个月前I tried to capture the MAC Address,我没有得到任何解决方案。

请告诉我您访问本地数据库或获取客户端计算机MAC地址的解决方案。

1 个答案:

答案 0 :(得分:1)

您不需要整个数据库来存储单个许可证密钥 - 此外,除非用户有插件/插件,否则无法通过Web浏览器在客户端PC上存储任意信息(至少在HTML5之前)被更广泛采用)。

Flash可以做到这一点,就像谷歌的Gears和各种类似的插件一样 - 但不是原生的。

此外,还有什么可以阻止用户将密钥从一台机器转移到另一台机器?

最好采用“指纹识别”方法 - 收集有关机器的一些独特信息,将其哈希并将哈希值存储在您的数据库中的许可证信息旁边。这样,当客户端连接时,您可以在允许访问之前检查ahsh是否正确。

棘手的一点是如何散列以及如何获取它 - 你需要选择一些你可以轻松访问的东西,非常不可能改变,而且不是用户专用的。

不要忘记来自客户端PC的任何信息都应被视为可疑/恶意。依靠客户端每次向您发送产品密钥只需要一个代理/数据包嗅探器,允许不同机器上的某人伪造它。

简短的回答是,这不能可靠而稳健地完成 - 如果可以的话,就不会有任何软件盗版。无论您采用何种方法,都应完全依赖服务器端决策,并希望尽可能复杂地拦截身份验证消息(至少处的SSL)。

最后一点 - 假装每个客户端PC都是恶意黑客 - 如果黑客知道产品密钥,他们可以复制它 - 所以不要给他们密钥,给他们一个随机的哈希,当你在里面查找系统找到钥匙。这样,您可以禁用/刷新哈希值,如果它们被泄露而不必更改基础产品密钥