如何防止用户从未经授权的设备连接到我的网络应用程序?

时间:2013-04-30 03:09:02

标签: javascript asp.net html vb.net

您好我需要实施某些操作以阻止用户从未经授权的其他计算机或移动设备连接到网络应用程序,例如,如果用户正确输入用户名和密码,并且公司授权的计算机或移动设备授予权限访问,但如果用户在另一台计算机或移动设备上,则必须拒绝登录webapp。

此外,用户可以在任何地方连接到互联网并使用此网络应用程序,但仅限于使用授权设备执行此操作。

我想用mac地址来完成这个,但我不知道这是不是正确的做法。

所以有人有任何建议吗?

编辑:此网络应用是一个内部应用程序,可以访问公司的销售和库存,因此公司提供的唯一设备可以访问网络应用程序。

2 个答案:

答案 0 :(得分:1)

MAC地址是一个糟糕的选择,因为伪造它是相当简单的(除了通过javascript获取它的困难)。几乎所有方案都会出现这个问题,因为您依靠用户控制的内容来告诉您该设备已获得授权。 Cookie,即使是“随机”的,也有同样的伪造问题。

如何授权设备?它需要多安全?为什么访问仅限于授权设备?

我在这里看到两种可能性:

  1. 此要求是对应用程序最终用户施加控制的误导性尝试,除了已通过传统身份验证方法(即登录/密码)解决的问题之外,没有真正的安全问题。
  2. 合理需要验证用户使用的设备是否满足某种程度的安全性(例如,位于物理安全位置的病毒防护等)。在这种情况下,我没有资格建立这样的解决方案(当然不是在StackOverflow答案中),并且从你的问题来看,你也不是。即使你提出了一个你确信安全的解决方案,我也能保证不是。
  3. 真正安全的实施可能会使用公钥加密和来自授权设备的某种签名。即使是签名也可以伪造,特别是对于基于浏览器的解决方案,这就是为什么这么多公司对trusted platform module感兴趣的原因。

答案 1 :(得分:0)

如果不访问java插件,本机编程,活动x等,您无法直接获取设备的mac地址。

执行此类操作的常用方法(阅读Facebook检测到您之前未从某个位置登录时)操作系统在已授权的设备上设置Cookie。在服务器上存储这些cookie的列表,并检查以确保在用户尝试使用该设备时获得正确的cookie。 cookie应该是随机的,几乎没有碰撞的机会。每次用户使用新值登录时,您甚至可能会喜欢并更新cookie。基本上,您所寻找的与“记住我”登录系统完全相同。