Security 如何在整个web应用程序中持续验证身份验证

Security 如何在整个web应用程序中持续验证身份验证,security,Security,所以我的前提是:web应用程序有一个基本的主页,允许用户注册或登录。当用户登录(通过SSL连接)时,凭证将在待验证的客户端和服务器之间安全传输。成功验证凭据后,服务器如何保持传入连接是同一个经过身份验证的用户,而不是其他用户 对于更具体的示例,假设服务器发回一个身份验证令牌,供用户在访问或修改私有数据时使用。无论在何处存储此令牌(即:cookie(不安全)、php会话(不太熟悉)或其他位置),只要用户使用令牌从服务器访问其信息和帖子(或更糟的是),任何侦听者都可以使用该令牌访问帐户,只要令牌有效

所以我的前提是:web应用程序有一个基本的主页,允许用户注册或登录。当用户登录(通过SSL连接)时,凭证将在待验证的客户端和服务器之间安全传输。成功验证凭据后,服务器如何保持传入连接是同一个经过身份验证的用户,而不是其他用户

对于更具体的示例,假设服务器发回一个身份验证令牌,供用户在访问或修改私有数据时使用。无论在何处存储此令牌(即:cookie(不安全)、php会话(不太熟悉)或其他位置),只要用户使用令牌从服务器访问其信息和帖子(或更糟的是),任何侦听者都可以使用该令牌访问帐户,只要令牌有效。是否每次访问私人信息时都必须发布新令牌,以便侦听方落后一步,只能访问旧令牌


有哪些方法可以让服务器知道请求来自经过身份验证的用户,并阻止侦听方访问其帐户?

简单地更改会话ID或令牌或其他内容对您没有帮助。它的使用很容易实现自动化

你已经退了一步。。。使用SSL。这有助于防止某人首先获取数据

您还应该跟踪服务器上的客户端IP地址,这样,如果您收到特定会话的请求而IP不匹配,您就可以立即知道有人在欺骗,或者用户有一个新地址,他们应该在其中重新验证


还有许多其他方法。我在堆栈溢出周围看到了一些。我将在这里发布我找到的产品,但通常最好结合使用各种技术。

这里对这个问题进行了很好的讨论,同时还有一个名为hdiv的产品广告,该产品声称可以安全地工作:

我考虑将客户端的IP与令牌一起使用。这两者结合在一起肯定会有帮助,但我注意到在我的家庭服务器上测试时,我的电脑和我女朋友的电脑被视为同一IP,因为它们位于同一路由器后面。因此,任何在同一网络上收听的人都不需要欺骗他们的IP,路由器会为他们这样做。除非我还添加了RemotePort。如果在路由上没有管理员权限,就不能欺骗它。你绝对不能依赖远程端口。客户端可以使用它想要的任何端口,您不应该每次都依赖于它是同一个端口。你和你女朋友显示为同一IP的原因是你只有一个实际的公共IP地址。其余的在一个专用子网中,NAT用于穿越这两个网络。你对此无能为力,所以不要浪费时间。此外,你肯定可以选择任何你想连接到服务器的端口。不需要更改路由器,这与此无关。所以,即使你可以相信它对某个特定的用户来说是一样的,它也非常容易“欺骗”。。。不需要欺骗,只需使用相同的端口。你是对的,我忘了路由器会随意分配端口。我知道为什么我们显示为同一个IP,这让我担心来自同一子网中的某个人的攻击仍然是可能的。感谢您指出端口缺陷。我猜这个问题大部分还没有解决。