【发布时间】:2014-07-09 21:23:05
【问题描述】:
我有一个与安全有关的问题。 是否可以通过会话变量实现身份验证和授权,而不使用存储在浏览器中的表单身份验证和表单身份验证 cookie?
如何在连续请求中发送会话 ID?它是否也存储在 cookie 中? 使用会话而不是表单身份验证进行身份验证有什么缺点?
谢谢
【问题讨论】:
标签: asp.net asp.net-mvc session authentication forms-authentication
我有一个与安全有关的问题。 是否可以通过会话变量实现身份验证和授权,而不使用存储在浏览器中的表单身份验证和表单身份验证 cookie?
如何在连续请求中发送会话 ID?它是否也存储在 cookie 中? 使用会话而不是表单身份验证进行身份验证有什么缺点?
谢谢
【问题讨论】:
标签: asp.net asp.net-mvc session authentication forms-authentication
从安全角度来看,使用用户会话进行身份验证是一个非常糟糕的主意。用户会话由 cookie (ASP.NET_SessionId) 维护,就像身份验证会话 (ASPXAUTH) 一样。但是,ASP.NET在身份验证会话cookie管理中内置了很多安全保护措施,例如加密、验证、防止篡改等。对于用户会话cookie,这些措施都没有,这使得网站很容易被破解安全。
没有理由不使用表单认证,实际上切换到使用会话进行认证更困难,因为你必须自定义代码来支持它。
【讨论】:
嗯,你有两个问题。
是否可以通过会话变量实现身份验证和授权,而不使用存储在浏览器中的表单身份验证和表单身份验证cookie?
是的,这是可能的,但我们不应该重新发明轮子,尤其是它与安全性有关。除非您有充分的理由,否则强烈建议尽可能使用表单身份验证。
如何在连续请求中发送会话 ID?它是否也存储在 cookie 中?使用会话而不是表单身份验证进行身份验证有什么缺点?
查看 cookie。
第一步:使用 Internet 模板创建一个新的 ASP.NET MVC 项目。 step2:启动它并创建一个新用户并登录。 step3:打开开发者工具查看cookie部分可以看到两个cookie
__RequestVerificationToken
.ASPXAUTH
.ASPXAUTH 是 FormAuthentication 用于进行身份验证的 cookie。对于服务器的所有以下请求,服务器将检查此 cookie 以验证用户。 您可以在登录时指定“记住我”,这将更改此 cookie 的生命周期,如果您不勾选它,生命周期将与当前会话绑定,如果您勾选它取决于服务器端的设置。
【讨论】: