我需要确保访问我的Web应用程序的每个用户只能从一台计算机上执行此操作,因此100个用户将意味着100台计算机。什么是最好的解决方案?在首次登录时是否检测并存储IP好主意?我认为即使在会话的生命周期内IP也可能发生变化,这是对的吗?我还考虑在用户首次登录时存储cookie。然后将这些cookie分配给用户,就像我已经使用密码和用户名一样,以及每次访问应用程序时检查是否存在该cookie。
请告诉我您认为最佳解决方案。如果重要的话,我的后端是php / mysql。
编辑:我需要澄清......这是正常会话管理的补充。我需要限制用户只能从一台特定的机器登录到Web应用程序。因此,如果用户最初在工作时从他的计算机登录并且我存储了它的ip / cookie / etc,那么客户端注销(甚至没有),回家并试图登录将无法做到这一点。我同意其糟糕的想法,但客户坚持认为:)
答案 0 :(得分:6)
答案 1 :(得分:2)
您可以通过向客户端发出使用keygen元素创建的客户端SSL证书来限制为单个useragent,这会让浏览器生成密钥对,将私钥保留在用户代理中,然后您会收到SPKAC ,您可以使用openssl创建证书,然后将其发送回用户代理,它会安装它,并且它可以用于仅通过HTTP + TLS识别该特定浏览器中的用户。
其他任何东西,根本不会100%工作 - 虽然你可以破解似乎有效的方法(直到出现问题并且不起作用):)
答案 2 :(得分:0)
答案 3 :(得分:0)
答案 4 :(得分:0)
如果它是一个仅在公司内部使用的内部应用程序,则可能可以定义IP范围,因为不在全球运营的小型公司可能会从其互联网访问提供商处获得一定数量的IP。
您还可以考虑使用$ _SERVER中的某些信息将用户限制为单个Web浏览器(HTTP_USER_AGENT)和单个端口(REMOTE_PORT)的组合 - 作为区分计算机的其他方法。
但是所有这些解决方案都不好或者更糟,从技术上来说可能无法解决这个问题(除非你的客户保证所有机器都会保留一个静态IP,在这种情况下,如果出现其他问题,这是一个微不足道的问题)。
答案 5 :(得分:-1)