我有一个带有混合 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/