Session Web应用程序安全

Session Web应用程序安全,session,web-applications,cookies,Session,Web Applications,Cookies,我正在测试一个web应用程序的安全漏洞,我遇到了以下两种情况 使用代理,我截获所有通过应用程序的请求并保存所有cookie。使用这些保存的cookies,我能够在不同的机器上恢复会话,并且无需进一步验证即可访问用户的个人信息。我想任何一个管理员都可以通过这种方式访问网络上所有用户的个人信息 与案例1相同,但即使在原始用户正确注销后,我也能够在另一台机器上恢复会话。i、 e即使原始用户已注销,并且客户端上所有与会话相关的cookie都已删除,会话似乎仍在服务器上保持有效 我相当肯定案例2是web应

我正在测试一个web应用程序的安全漏洞,我遇到了以下两种情况

  • 使用代理,我截获所有通过应用程序的请求并保存所有cookie。使用这些保存的cookies,我能够在不同的机器上恢复会话,并且无需进一步验证即可访问用户的个人信息。我想任何一个管理员都可以通过这种方式访问网络上所有用户的个人信息

  • 与案例1相同,但即使在原始用户正确注销后,我也能够在另一台机器上恢复会话。i、 e即使原始用户已注销,并且客户端上所有与会话相关的cookie都已删除,会话似乎仍在服务器上保持有效


  • 我相当肯定案例2是web应用程序中的一个安全缺陷。我想知道案例1在技术上是否也可以被视为web应用程序中的漏洞。如果是这样的话,有什么方法可以解决这个问题?

    < P> SSL将有助于防止你所描述的中间人攻击。

    您可以在会话中存储一个变量,其中包含用户的IP、用户代理等或它们的散列,并在每个请求中检查它,以便如果它被劫持,劫持者必须伪造这些。虽然不完美,但很有帮助。

    据我所知,只有一(1)个网站的个人资料页面中有会话管理器。您可以查看您仍然登录的位置,选择任意或全部,然后将其注销

    某些内容管理系统允许最大登录时间。根据用户使用页面的方式(例如:用户在页面上停留的时间永远不会超过3分钟),可以将此值设置得非常低

    这不是web应用程序中的技术漏洞。但是,web应用程序是负责解决这些问题的指定方。

    案例1。 这并不是系统管理员可以恢复会话的真正安全缺陷,因为系统管理员通常可以恢复密码散列并尝试破解它们,或者创建一些安全缺陷来针对用户

    虽然考虑一个系统管理员可以尝试恢复会话可能是无害的,但上游可能不是这样(在其他人连接的互联网上),在HTTPS中实现所有用户登录/敏感活动通常被认为是一个很好的实践。 仅对上面的回复进行评论,当通过HTTPS使用cookie时,不可能将它们从外部恢复到计算机(就像中间的人一样)

    案例2. 这并不是一个真正的安全缺陷。在考虑这个案例时,您假设案例1,这在第一时间不应该发生(有人嗅了嗅您的饼干)

    注: 除了通过HTTPS保护登录/敏感活动外,在同一域中加密整个网站可能是明智的,因为如果同一域中的某些页面未加密,可以向客户端注入流量以公开其cookie

    当用户没有主动注销时,很难从服务器上删除用户标识(单击webapp上的按钮删除标识)。如果用户刚刚关闭页面,则服务器不知道该用户已登录,并认为该用户标识仍然有效

    您可以将用户与ip相关联,这使得攻击者很难嗅出cookies并从不同的ip使用它们,但它在正常用户子网中不起作用,因为使用NAT时,子网中的所有计算机都具有相同的外部ip

    注:
    使用自签名加密有其危险性。虽然它可以保护用户免受外部嗅探,但对于某些人来说,诱骗不在意的用户登录到您的应用程序的伪造版本是很容易的。我对WAPs上的捕获门户进行了此操作。

    关于案例1是否是漏洞的问题,当然是。为什么?因为它是系统设计、实现或操作中的一个缺陷或弱点,可能被利用来违反系统的安全策略,而安全策略正是漏洞的确切定义

    为了解决这个问题,我通常会记录成功登录发送的用户代理。我把它写下来,然后每当用户想要从服务器上得到任何东西时,我都会检查当前的用户代理是否与登录时发送的代理匹配

    您可以将其与IP地址结合起来,检查这两个参数在请求之间是否改变,如果改变,则很可能有人劫持了cookie

    if ( ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) )
    die( "{ 'succes': false , 'text' : 'Please re-log in.' );