嗨,我需要实现一些东西来防止用户连接到一个web应用程序,从另一台计算机或移动设备,它没有被授权,例如,如果用户输入正确的用户和密码和计算机或移动授权的公司授予访问权限,但如果用户是在另一台计算机或移动设备,这必须拒绝登录到web应用程序
用户也可以在任何地方连接到互联网并使用这个web应用程序,但只有当使用授权的设备来做这件事。
我想用mac地址来完成这个,但我不知道这是不是正确的方法。
有人有什么建议吗?
编辑:这个web应用程序是一个内部应用程序,可以访问公司的销售和库存,所以只有公司提供的设备才能访问web应用程序
MAC地址是一个糟糕的选择,因为伪造它是相当微不足道的(除了通过javascript获取它的困难)。几乎任何方案都会遇到这个问题,因为您依赖于用户控制的内容来告诉您设备是经过授权的。cookie,即使是"随机"的,也有同样的伪造问题。
设备如何授权?它需要多安全?为什么只有授权的设备才能访问?
我看到了两种可能:
- 这个要求是对应用程序的最终用户施加控制的错误尝试,除了通过传统的身份验证方法(即登录/密码)已经解决的问题之外,没有真正的安全问题。
- 有合法的需要验证用户正在使用的设备是否满足某种安全级别(例如,病毒防护、位于物理安全位置等)。在这种情况下,我没有资格构建这样的解决方案(当然也不是StackOverflow的答案),而且,从你的问题来看,你也没有资格。即使你想出了一个你确信是安全的解决方案,我也可以保证它不是。
一个真正安全的实现可能会使用公钥加密和来自授权设备的某种签名。甚至这个签名也可以伪造,特别是对于基于浏览器的解决方案,这就是为什么这么多公司对可信平台模块感兴趣。
如果不使用java插件、本机编程、activex等,就不能直接获得设备的mac地址
通常这样做的方法(阅读Facebook检测当你没有从一个位置登录之前)操作系统设置一个cookie授权的设备。在服务器上存储这些cookie的列表,并检查以确保在用户尝试使用设备时获得正确的cookie。饼干应该是随机的,几乎没有碰撞的机会。您甚至可以在每次用户登录时使用新值更新cookie。基本上,你正在寻找的是完全相同的"记住我"登录系统。