限制用户可以访问ASP.NET网站的计算机数量?

问题描述:

我建立一个ASP.NET应用程序。其中一个reqiurments的是限制用户可从中访问该网站(例如5台计算机)的含量不同的计算机数量。它不一定是完美的,如果一个普通用户,没有IT知识将无法忽略检查 - 解决方案将是K.限制用户可以访问ASP.NET网站的计算机数量?

我正在考虑一种方法来获得用户机器(例如:MAC和计算机名称的组合)。当然,用户将被通知检查他们的MAC。 Howevew,这是很难做到的,因为HTTP协议是无状态的。一个解决方案是使用ActiveX。但它仅限于Windows系统,这是对容易通过安全检查(由刚禁用的ActiveX,这是据我所知默认情况下禁用)。

正如我GOOGLE了,这是一个相当普遍的问题,但目前还没有其他的解决方案,然后使用ActiveX。有没有人有这样的问题,并找到一些好的解决方案?

用户可以在不同的网络。它将是一个外联网应用程序,因此检查IP将不起作用(路由器和动态IP)。

编辑:我想这样做这是为了避免购买会员才达到,然后共享帐户数据给你的朋友是什么。

+0

为什么你要做到这一点的路线?你想达到什么目的?为什么你必须限制你的用户到一台你无法控制的特定计算机? – 2009-04-23 22:04:55

+0

这是一个很好的问题。这一要求的意义在于避免用户在应用程序中注册,支付会员资格并向其他人提供帐户凭证。 – Adam 2009-04-23 22:37:28

+0

但是如果他们付钱了,你为什么在乎谁使用它?你担心他们会“太多”使用它吗?然后我建议你找到“太多”的不同定义。 – 2009-04-23 23:29:35

基于您的评论

这一要求的意义上是为了避免用户在应用程序注册为会员,并比给帐户的凭据向其他人支付。

要么你去昂贵的,像RSA hardware authenticators

- 或 -

你改变业务模式,使其没有吸引力,共享凭据极为安全。例如由于成本 - 我不分享我的苹果或亚马逊的信誉,因为我不想支付他们的购买。另一个是有一个用户社区。没有人会分享他们的flickr账户,因为这些照片是艺术家的照片,并且他们不希望任何人为了几美元而掏空他们的东西。共享被劝阻,因为它是一个社区,而不仅仅是一个存储库。

但没有这些东西阻止用户共享,但我敢肯定它发生少了很多。

否则,您将自己限制为(尝试)被动监视滥用行为的机制。并发下载太多,并发访问过多等。如果您的用户违反了您的协议​​中的t和c,那么您将暂停其帐户。但是你必须有非常明显的犯罪者,因为这很容易导致错误。如果可以的话,这是一种可以避免的模式,因为你总是打起精神来,而且总会有人把你甩开。

没有人会注册一个网站,如果他们需要购买RSA设备来访问它。这不是一个可行的消费者解决方案。


(原来的答复) 我想你想看看是使用客户端证书身份验证的东西。基本上你的用户在他们的机器上安装一个个人客户证书,这样当他们连接到你的服务器时,你的服务器可以验证那台电脑。

我不会告诉你很容易,因为它看起来并不像它。您可能需要设置您自己的证书服务器并快速搜索,没有一个是漂亮的。

也许,OS根据,有一个功能,在那里,你可以创建一个证书是机器特有的,或者能不能出口。

这种事情通常是服务器之间之间的安全连接,而不是通常为要在客户端什么。这将成为帮助台的噩梦。

维基Transport Layer Security或windowssecurity.com Using Client Certificate Authentication with IIS 6.0 Web Sites或MSDN Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication

你也可以去使用RSA hardware authenticators

除非我们是在谈论限制谁都是在同一个局域网内的用户,为什么你能不能只跟踪用户的IP地址,如果他们来自不是他们的“名单”,那么你可以把一个IP地址他们走了,不认证?

+2

如果用户的IP地址发生变化,这将会是一个问题 - 很常见,特别是在拨号时。 – 2009-04-23 20:55:52

  • 使用与MAC过滤/ IP筛选
  • 一个IP白名单防火墙在应用程序
  • “登录”用户在成员资格提供

请告诉我的情况下,是的阈值它面向公众的网站或东西,你内部要去主机上的专用LAN

如果一定时间内限制是不够好 - 也就是说,用户只能用五年的不同在一天,一周或一个月内使用计算机,您可以随时检查IP地址。每一个用户试图访问你的网站的时候,你可以有下面的算法,看看你是否应该允许访问:

1)检查什么IP不会忽略曾经被使用这个用户帐户。有少于5个独特的IP吗?是=> 3否=> 2

2)五个或多个IP的已经保存。他们中至少有一个是否至少有一天/一周/一个月大?是=> 3否=> 4.

3)这是确定的 - 不到五IP的存储,或至少一个太旧。删除任何太旧的,存储新的并进行身份验证。 => 5.

4)这不是OK - 五个或更多IP的已经在你的数据库中,并没有一个尚未过期。不认证。 => 5

5)End

+0

是的,这将是一个很好的解决方案,但用户可以拥有动态IP,这个IP可以经常更改。 – Adam 2009-04-23 21:02:09

+1

而这正是为什么只有在限制自己时间跨度的情况下这才会起作用。你多久假设一个动态IP客户端接收一个新的IP地址?如果您的时间跨度较短,则更改后旧IP将被标记为“旧”。 – 2009-04-23 21:36:59

它只有5台特定的计算机吗?或者不超过5台同时使用的电脑?这不是一个完美的解决方案,但可以分别在会话开始/结束时递增/递减计数器。

编辑:好吧在这种情况下我可能会去一个基于cookie的方法(同样并不完美)。当PC连接客户端计算机上的cookie时,将其记录在服务器上。当#6尝试连接时,阻止cookie并拒绝连接。

我想你应该考虑使用WCF Web服务和定制的WinForms/WPF客户端授权。

使用(追踪)cookies?即使这是以浏览器为基础,而不是基于每台计算机的基础,并且当然需要用户启用持久cookie,这可能足够好了吗?检查cookie是否存在并且不应该过期,如果它确实没有问题 - 如果没有,请添加它并在后端记录此信息...

屏蔽IP,网络或任何其他与网络相关的标准,虽然有自己的问题,当然像大多数用户没有一个固定的IP或如果是这样,通过NAT的恐怖分享给许多其他用户,应该很可能由发布防火墙完成)而不是应用程序本身。

通过简单的web站点下车某人的电脑的指纹或任何确定的东西应该是大多不可能的(一个希望),而是需要用户的本地应用程序或插件的安装。

编辑:这是什么缘故新加入的信息,使得它相当清楚的,任何这样的解决方案将是烦人和费用额外的开发和维护。关于规避这种限制的答案似乎是最好的。

这是用于许可方案吗?如果是这样,这是自互联网出来以来我听说过的最恶劣的许可证之一。

这是那种用于制作感的桌面应用程序上下文许可的,但使在基于Web的应用程序没有任何意义。你的应用程序可能是这些用户使用的唯一一个这样表现的应用程序。这对你来说不好看。