1

简而言之,我们有一个用 asp.net c# 构建的网站,我们正在添加一个登录区域,供人们查看一些付费内容。会有不同级别的帐户,一个登录后每天可以下载10个文档,另一个可以下载20个等等......

客户现在还要求的是,他们能否向客户出售对该设施的无限制访问权限,而该客户只有在使用某些特定计算机时才能获得这种无限制访问权限。

真的不知道是否有一个优雅的解决方案?我在想 MAC 地址一定是关键,但据我所知,c# 代码不能直接访问它?已经读过JavaSript 在获取MAC 地址时太不可靠了……而编写Java 小程序可能是唯一的方法。

还有人有比这更好的建议吗?

任何帮助将不胜感激。

4

3 回答 3

2

您正在寻找设备指纹识别的想法。由于这是一个 Web 应用程序,因此您需要设备指纹的子字段,称为浏览器指纹。

要在 80% 的时间内正确地进行浏览器指纹识别非常容易,而要在 100% 的时间里正确地进行浏览器指纹识别则非常困难。

查看Panopticlick(来自 EFF)以了解其工作原理。

有几个商业软件提供商提供可靠的浏览器指纹作为服务。

虽然一般情况并不容易,但您的具体情况可能更容易。例如,如果您将访问权出售给一家大到足以通过一个或几个知名 IP 地址路由所有流量的公司,您可以只使用该 IP 来验证用户身份。

或者,或者特别是如果您只需要允许设施内的某些计算机,您可以创建一个浏览器插件来检查硬件(如 MAC 地址)并将该信息提供给您的身份验证代码。

正确编写这种代码(因为它既不会显示误报也不会显示误报,并且可以容忍硬件的变化,例如 NIC 升级)是非常困难的。使用商业浏览器指纹识别公司可能是值得的。

于 2012-10-26T16:02:21.380 回答
0

有没有办法可以依赖静态 IP 地址?我知道,根据站点的不同,这些可能会发生变化,但网卡也会发生变化(尽管这种情况不太常见)。

另一个问题:您希望限制在单个机器上,还是只是确保只使用该地址上的“N”个许可证?如果是这种情况,您可以跟踪您身边的 N 条许可证记录,并在机器上使用相应的 cookie(可能是 IP 地址和使用您的私钥签名的许可证密钥的串联/散列),该 cookie 在一周后到期或你有什么。

您有自己的 IP 地址、许可证密钥和到期日期的数据库/列表,因此如果计算机使用无效 cookie 登录(IP 地址与您的数据库中与其许可证关联的内容不匹配,以防止复制 cookie跨),如果您的数据库中有可用的许可证(由于一对已过期/从未使用过),请给他们新的许可证(以及怀疑的好处)。如果它不可用,请给出礼貌的“没有更多可用的许可证,这是我们的销售编号”消息。这意味着您数据库中的 IP 地址更多的是参考,但它也会减慢“计算机跳跃”的速度,因为这些记录在“一周或你有什么”过去之前不会过期。如果计算机使用“有效 IP”(在您的数据库中)但没有 cookie/无效 cookie 登录,使用与以前相同的许可证重新颁发该 cookie,并具有新的到期日期。也许。可能是同一个保质期。

如果客户站点的 IP 地址变化缓慢,这应该可行。如果它们在每个时间范围内每台计算机更改不止一次,这可能会带来问题。

这些许可证的初始分发可能是“先到先得”,并且依赖于网络地址范围和登录。

于 2012-10-26T16:17:27.230 回答
0

已经提供了更性感的答案。好的旧/无聊的数字证书就足够了吗?

于 2012-10-26T22:33:56.007 回答