仅使用会话状态的身份验证(无表单身份验证cookie)

时间:2014-05-21 09:51:54

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

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

绝对没有理由不使用表单身份验证,实际上更难以切换到使用会话进行身份验证,因为您必须使用自定义代码来支持它。

答案 1 :(得分:1)

嗯,你有两个问题。

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

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

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

查看cookie。

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

__ RequestVerificationToken
.ASPXAUTH

.ASPXAUTH是FormAuthentication用于执行身份验证的cookie。对于服务器的所有后续请求,服务器将检查此cookie以验证用户身份。 你可以指定"记住我"当您登录时会改变此cookie的生命周期,如果您不勾选它,则生命周期与当前会话相关联,如果您勾选它取决于服务器端的设置。