Asp.net ASP会话的Seurity分支

Asp.net ASP会话的Seurity分支,asp.net,session,Asp.net,Session,我正在研究将一些安全敏感信息(用户对web应用程序的有效权限)存储在会话驻留对象中,以减少数据库查询,同时在整个应用程序中执行权限检查 我知道会话存储在服务器端,在正常情况下客户端无法直接访问。从理论上讲,ASP.net的其他持久性机制在客户端是可以被击败的,但这些类型的加密实现缺陷不应该暴露会话状态 攻击者在客户端会话状态下修改数据时需要对服务器进行多大程度的控制?假设他们有一个sessionID和一个ASPAUTH cookie 例如: 远程攻击,如修改的POST或对 页面 具有IIS编程

我正在研究将一些安全敏感信息(用户对web应用程序的有效权限)存储在会话驻留对象中,以减少数据库查询,同时在整个应用程序中执行权限检查

我知道会话存储在服务器端,在正常情况下客户端无法直接访问。从理论上讲,ASP.net的其他持久性机制在客户端是可以被击败的,但这些类型的加密实现缺陷不应该暴露会话状态

攻击者在客户端会话状态下修改数据时需要对服务器进行多大程度的控制?假设他们有一个sessionID和一个ASPAUTH cookie

例如:

  • 远程攻击,如修改的POST或对 页面

  • 具有IIS编程访问权限的攻击者(WMI mabey?) 是否能够在同一个或另一个应用程序池的内存中访问和更改会话状态

  • 攻击者是否需要能够将代码发布到我的应用程序中才能操纵会话内存


我知道这类问题通常依赖于代码中的错误,所以想尽一切办法假设我编写了有史以来最糟糕、最不安全的代码(我没有,但是…),并在构造函数或生命周期事件中执行更改会话等操作。

因为我们不知道代码是如何实现的,所以我们只能猜测

首先,会话不应该用于安全敏感的事情。是的,客户不能直接阅读会话,还有其他因素要考虑。
  • 默认情况下,会话cookie不加密,而是作为纯文本传递
  • 会话固定攻击很容易实现
  • 如果会话cookie被劫持,甚至被猜测,那么用户帐户是什么并不重要,他们将获得您通过该cookie分配的任何安全权限
  • 会话是不稳定的,IIS可以随时终止会话,因此最终用户仍在登录,但由于许多可能的原因,他们的会话丢失。所以现在他们的安全也不稳定
  • 还有很多其他更合适的方法来做你想做的事情,会话从来都不是一个合适的方法

    其他合适的方法包括

    • 使用FormsAuthentication票证的用户数据字段存储信息
    • 使用自定义声明和基于声明的身份验证,如ASP.NET Identity、WIF或IdentityServer
    • 使用asp.net缓存保存临时信息,基于标识(非会话)并添加缓存退出超时
    • 还有更多

      • 因为我们不知道您的代码是如何实现的,所以我们只能猜测

        首先,会话不应该用于安全敏感的事情。是的,客户不能直接阅读会话,还有其他因素要考虑。
      • 默认情况下,会话cookie不加密,而是作为纯文本传递
      • 会话固定攻击很容易实现
      • 如果会话cookie被劫持,甚至被猜测,那么用户帐户是什么并不重要,他们将获得您通过该cookie分配的任何安全权限
      • 会话是不稳定的,IIS可以随时终止会话,因此最终用户仍在登录,但由于许多可能的原因,他们的会话丢失。所以现在他们的安全也不稳定
      • 还有很多其他更合适的方法来做你想做的事情,会话从来都不是一个合适的方法

        其他合适的方法包括

        • 使用FormsAuthentication票证的用户数据字段存储信息
        • 使用自定义声明和基于声明的身份验证,如ASP.NET Identity、WIF或IdentityServer
        • 使用asp.net缓存保存临时信息,基于标识(非会话)并添加缓存退出超时
        • 还有更多

          • 因为我们不知道您的代码是如何实现的,所以我们只能猜测

            首先,会话不应该用于安全敏感的事情。是的,客户不能直接阅读会话,还有其他因素要考虑。
          • 默认情况下,会话cookie不加密,而是作为纯文本传递
          • 会话固定攻击很容易实现
          • 如果会话cookie被劫持,甚至被猜测,那么用户帐户是什么并不重要,他们将获得您通过该cookie分配的任何安全权限
          • 会话是不稳定的,IIS可以随时终止会话,因此最终用户仍在登录,但由于许多可能的原因,他们的会话丢失。所以现在他们的安全也不稳定
          • 还有很多其他更合适的方法来做你想做的事情,会话从来都不是一个合适的方法

            其他合适的方法包括

            • 使用FormsAuthentication票证的用户数据字段存储信息
            • 使用自定义声明和基于声明的身份验证,如ASP.NET Identity、WIF或IdentityServer
            • 使用asp.net缓存保存临时信息,基于标识(非会话)并添加缓存退出超时
            • 还有更多

              • 因为我们不知道您的代码是如何实现的,所以我们只能猜测

                首先,会话不应该用于安全敏感的事情。是的,客户不能直接阅读会话,还有其他因素要考虑。
              • 默认情况下,会话cookie不加密,而是作为纯文本传递
              • 会话固定攻击很容易实现
              • 如果会话cookie被劫持,甚至被猜测,那么不管用户帐户是什么,他们都会