asp.net 使用 requireSSL 并且仍然能够检查用户是否在非 SSL 页面上进行了身份验证

标签 asp.net formsauthentication formsauthenticationticket requiressl

我有一个带有混合 SSL 的 Web 应用程序 (asp.net 3.5)。所有帐户相关页面均通过 SSL 传送。大多数其他页面都是通过非 SSL 传送的。要在 HTTPS 和 HTTP 之间自动切换,我使用 this component 。最近有一条新闻报道了在不安全的 Wifi 网络上劫持用户 session 的能力。这应该可以通过捕获通过非 ssl 连接传输的 Cookie 来实现。

这促使我重新审视我在此 Web 应用程序中的安全选择。我(再次)捕获了 this article来自 MSDN 并在我的 Formsauthentication 上尝试了 requireSSL=true 属性。在我启动 Web 应用程序之前,我意识到我的 User.Identity 在非 SSL 页面上将为 null,因为包含此信息的 cookie 不会从 Web 浏览器发送或发送到 Web 浏览器。

我需要一种通过 SSL 连接对用户进行身份验证的机制...并记住此身份验证信息,即使在非 SSL 页面上也是如此。

在搜索时,我发现了 this post 。在我看来,这是一个很好的解决方案。但是,我想知道是否可以找到将登录信息存储在Sessionstate中的解决方案?我正在考虑捕获 Global.asax 中的 Application_AuthenticateRequest 。检查连接是否安全并检查 authcookie 或 Session。我还不知道我将如何实现这一点。也许你可以和我一起思考这个问题?

最佳答案

不幸的是,您的要求是相互冲突的。您无法通过非 SSL 进行安全 session ,因此我想挑战您的基本假设:为什么不让整个网站都使用 SSL?

关于asp.net 使用 requireSSL 并且仍然能够检查用户是否在非 SSL 页面上进行了身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546682/

相关文章:

asp.net - 在 cassandra 中存储无模式数据

c# - 检查身份验证票过期而不影响它

asp.net-mvc-3 - MVC 3 Cookie 不起作用

c# - FormsAuthenticationTicket.UserData 属性的最大长度

asp.net - HTTP 错误 403.14 - 禁止 - Web 服务器配置为不列出此目录的内容

c# - 如何在回发后将文本保存到绑定(bind)数据库中数据的文本框

ASP.NET 2.0 嵌套数据网格?

asp.net - 用户更改密码后,旧密码和新密码均有效

c# - FormsAuthenticationTicket.expiration v web.config 值超时

c# - FormsAuthentication.SignOut 抛出 NullReferenceException