session - 网络应用安全

标签 session web-applications cookies

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

  • 使用代理,我拦截了通过应用程序的所有请求并保存所有 cookie。使用这些保存的 cookie,我可以在另一台机器上恢复 session 并访问用户的个人信息,而无需任何进一步的身份验证。我认为任何管理员都可以进行此类操作并访问网络上所有用户的个人信息。
  • 与案例 1 相同,但即使在原始用户正确注销后,我也能够在另一台机器上恢复 session 。即即使在原始用户注销并且所有与 session 相关的 cookie 在客户端删除后, session 似乎在服务器上仍然有效。

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

    最佳答案

    案例1.
    系统管理员可以恢复您的 session 并不是真正的安全漏洞,因为系统管理员通常可以恢复密码哈希并尝试破解它们或创建一些安全漏洞以针对其用户使用。

    尽管考虑到系统管理员可能会尝试恢复您的 session 可能是无害的,但在上游可能并非如此(在有人连接的互联网的其余部分),并且通常认为实现所有用户登录/敏感事件是一种好习惯在 HTTPS 中。

    只是对上面的回复发表评论,当通过 HTTPS 使用 cookie 时,不可能将它们从外部恢复到计算机(如中间人)。

    案例2。
    这并不是真正的安全漏洞。在考虑这种情况时,您假设情况 1,首先不应该发生这种情况(有人嗅探您的 cookie)。

    笔记:
    除了通过 HTTPS 保护登录/敏感事件之外,最好对同一域中的整个网站进行加密,因为如果同一域中的某些页面未加密,则可以向客户端注入(inject)流量以暴露其 cookie。

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

    您可以将用户与 ip 相关联,这使攻击者难以嗅探 cookie 并从不同的 ip 使用它们,但它在普通用户子网中不起作用,因为使用 NAT,子网中的所有机器都具有相同的外部 ip。

    笔记:
    使用自签名加密是有危险的。尽管它可以保护用户免受外部嗅探,但有人很容易欺骗粗心的用户登录您的应用程序的欺骗版本。我已经通过 WAP 上的强制门户网站做到了这一点。

    关于session - 网络应用安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132110/

    相关文章:

    postgresql - 我想根据从 View 中获取的数据创建一个表

    Hibernate session.close() 不返回连接到池

    cookies - .NET Core 2.0 Cookie 事件 OnRedirectToLogin

    security - 任何解决Google 15,000至75,000美元OAuth安全评估的方法

    c# - .NET和负载均衡器?

    cookies - 为什么即使对于同一个站点 Ajax 请求也需要 XMLHttpRequest.withCredentials

    perl - 服务器看不到 cookie

    java - hibernate : Change Hibernate Connection

    使用 HTML 的 PHP session

    eclipse - Windows中的Tomcat webapps目录