Dan*_*ann 16 asp.net asp-classic asp.net-mvc-3 asp.net-mvc-4
如果用户登录或不登录,我们是否只能存储在会话中并摆脱.ASPXAUTH?
Dan*_*ous 27
ASP.Net_SessionId是一个cookie,用于标识服务器上的用户会话.会话是服务器上的一个区域,可用于在http请求之间存储数据.
例如,控制器动作可以执行:
Session["FirstName"] = model.FirstName;
Run Code Online (Sandbox Code Playgroud)
然后,在后续操作中,可以从会话中检索第一个名称:
var firstName = Session["FirstName"];
Run Code Online (Sandbox Code Playgroud)
ASP.Net_SessionId标识该用户请求的会话.不同的用户将提交不同的cookie,因此Session["FirstName"]将为该不同的用户保留不同的值.
ASPXAUTH是一个cookie,用于标识用户是否已通过身份验证(即,是否已验证其身份).例如,控制器操作可以确定用户是否提供了正确的登录凭据,如果是,则使用以下方式发出身份验证cookie :
FormsAuthentication.SetAuthCookie(username, false);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用[Authorize]属性检查用户是否有权执行操作,该属性检查ASPXAUTHcookie 的存在.
总而言之,cookie有两种不同的用途.一个用于确定用户会话状态,另一个用于确定用户是否已通过身份验证.
为了完成你的问题的答案,是的,你可以摆脱ASPXAUTHcookie并只使用session来识别用户(我已经在旧的经典asp应用程序中看到了这一点),但我不推荐它.更清楚地分离关注点并在必要时使用适当的方法.会话和身份验证将设置自己的超时值.通过使用会话进行身份验证,您将只有一次超时.我不确定在使用会话进行身份验证时是否存在任何安全隐患,但我仍然会将它们分开.
.NET发出一个完全不同的cookie,称为ASP.NET_SessionId,以跟踪会话状态。
ASPXAUTH cookie用于确定用户是否已通过身份验证。
因此,这是两个不同的概念,即会话状态管理和使用表单身份验证的身份验证管理。
如果使用会话进行身份验证而忘记了表单身份验证,则将摆脱.ASPXAUTH
两者都是必需的,使用任一都会导致以下漏洞:
\n\n*ASP.NET_SessionId 单独:会话固定
\n\n*仅表单身份验证 Cookie:可以\xe2\x80\x99t 终止服务器上的身份验证令牌
\n\n另外,您需要确保它们正确耦合在一起。否则,配置也会带来风险:
\n\n*松散耦合的 ASP.NET_SessionID 和表单身份验证 Cookie:仍然容易受到攻击
\n\n参考:\n http://blog.securityps.com/2013/06/session-fixation-forms-authentication.html
\n| 归档时间: |
|
| 查看次数: |
21716 次 |
| 最近记录: |