【问题标题】:Authentication using only session state (no forms authentication cookie)仅使用会话状态进行身份验证(无表单身份验证 cookie)
【发布时间】:2014-07-09 21:23:05
【问题描述】:

我有一个与安全有关的问题。 是否可以通过会话变量实现身份验证和授权,而不使用存储在浏览器中的表单身份验证和表单身份验证 cookie?

如何在连续请求中发送会话 ID?它是否也存储在 cookie 中? 使用会话而不是表单身份验证进行身份验证有什么缺点?

谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc session authentication forms-authentication


    【解决方案1】:

    从安全角度来看,使用用户会话进行身份验证是一个非常糟糕的主意。用户会话由 cookie (ASP.NET_SessionId) 维护,就像身份验证会话 (ASPXAUTH) 一样。但是,ASP.NET在身份验证会话cookie管理中内置了很多安全保护措施,例如加密、验证、防止篡改等。对于用户会话cookie,这些措施都没有,这使得网站很容易被破解安全。

    没有理由不使用表单认证,实际上切换到使用会话进行认证更困难,因为你必须自定义代码来支持它。

    【讨论】:

      【解决方案2】:

      嗯,你有两个问题。

      是否可以通过会话变量实现身份验证和授权,而不使用存储在浏览器中的表单身份验证和表单身份验证cookie?

      是的,这是可能的,但我们不应该重新发明轮子,尤其是它与安全性有关。除非您有充分的理由,否则强烈建议尽可能使用表单身份验证。

      如何在连续请求中发送会话 ID?它是否也存储在 cookie 中?使用会话而不是表单身份验证进行身份验证有什么缺点?

      查看 cookie。

      第一步:使用 Internet 模板创建一个新的 ASP.NET MVC 项目。 step2:启动它并创建一个新用户并登录。 step3:打开开发者工具查看cookie部分可以看到两个cookie

      __RequestVerificationToken
      .ASPXAUTH

      .ASPXAUTH 是 FormAuthentication 用于进行身份验证的 cookie。对于服务器的所有以下请求,服务器将检查此 cookie 以验证用户。 您可以在登录时指定“记住我”,这将更改此 cookie 的生命周期,如果您不勾选它,生命周期将与当前会话绑定,如果您勾选它取决于服务器端的设置。

      【讨论】:

        猜你喜欢
        • 2010-09-26
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 2019-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        相关资源
        最近更新 更多