使用c#根据他们访问网站的物理机器为某些用户提供不同的访问权限

时间:2012-10-26 15:57:29

标签: c# asp.net

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

客户现在还要求的是,他们可以向客户出售无限制访问此设施的权限,客户只能在使用某些特定计算机时获得此无限制访问权。

真的不知道这是否有优雅的解决方案?我认为MAC地址必须是关键,但据我所知,c#代码没有直接访问权限?已经读过JavaSript在获取MAC地址时太不可靠......并且编写Java applet可能是唯一的方法。

有没有其他人有比这更好的建议?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

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

很容易在80%的时间内完成浏览器指纹识别,并且很难在100%的时间内完成正确的操作。

看看Panopticlick(来自EFF),了解它是如何运作的。

有几家商业软件提供商提供可靠的浏览器指纹识别服务。

虽然一般情况并不容易,但您的具体情况可能会更容易。例如,如果您销售的公司的访问权限足以通过一个或几个众所周知的IP地址路由所有流量,那么您可以使用该IP对用户进行身份验证。

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

正确获取此类代码(因为它既不显示误报也不显示漏报,并且能够容忍硬件更改,例如NIC升级)非常困难。使用商业浏览器指纹识别公司可能是值得的。

答案 1 :(得分:0)

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

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

您拥有自己的数据库/ IP地址,许可证密钥和到期日期列表,因此,如果计算机使用无效的cookie登录(IP地址与其数据库中的许可证不相符,则为如果您的数据库中有可用的许可证(由于一个配对已过期/从未使用过),请为他们提供新的许可证(并且有疑问)。如果它不可用,请给出一个礼貌的“没有更多的许可证,这是我们的销售号码”消息。这意味着数据库中的IP地址更像是一个参考物,但它也会减慢“计算机跳跃”,因为这些记录在“一周或你已经过去”之前不会过期。如果计算机使用“有效IP”(在您的数据库中)登录但没有cookie /无效cookie,请使用与之前相同的许可证重新颁发该cookie,并使用新的到期日期。也许。也许是相同的失效日期。

如果IP地址在客户的网站上变化缓慢,这应该可行。如果每个计算机每个时间段更改一次以上,则可能会出现问题。

这些许可证的初始分发可以是“先来先服务”,并依赖于网络地址范围和登录。

答案 2 :(得分:0)

已经提供了更性感的答案。好老/无聊digital certificates就够了吗?