c# - 注销后如何放弃 Azure App Service 会话
问题描述
我有一个简单的 ASP.NET 应用程序,它被部署为 Azure 应用服务。应用程序具有 aad 作为身份验证方法。
身份验证在 Azure 门户中配置为“快速”管理模式 (无身份验证代码,仅门户配置)。身份验证本身工作正常。
问题是从应用程序注销后,服务器会话保持清醒,用户可以使用以前使用的AppServiceAuthSession
cookie 值对应用程序进行身份验证访问。
以下过程显示了如何使用先前保存的AppServiceAuthSession
值访问经过身份验证的数据。
- 使用 aad 登录应用程序(浏览至
https://[myapp].azurewebsites.net
-> Azure AD 登录 -> 没问题) - cookie 的存储值:
AppServiceAuthSession
- 通过浏览注销:
https://[myapp].azurewebsites.net/.auth/logout
- 使用以前存储的 cookie 值执行 http get 并使用以下样式:
curl --cookie "AppServiceAuthSession=[value]" -X GET https://[myapp].azurewebsites.net
- 使用以前使用的 cookie 值检索索引页面。
如何防止这种情况,以及如何在注销时正确放弃所有会话数据?
解决方案
对此进行“保护”是没有意义的。
攻击者已经入侵了用户的浏览器并获得了访问存储在其中的 cookie 的权限。根据定义,这个 cookie 是一个秘密,可以证明 HTTP 客户端的身份。如果攻击者已经可以访问它,他们已经可以以他们选择的任意数量的方式使用它,您将无法阻止或区分合法访问服务器的真实用户。
唯一真正的解决方案是使用HTTPS。
参考:
推荐阅读
- typescript - 打字稿:间接调用函数表达式(iife)中的函数重载?
- laravel - 将 laravel 项目设置为 Nginx 反向代理
- reactjs - 如何在固定布局中渲染不同的组件
- rest - 我应该在restful api中使用不同的satus代码,而不是200吗?
- javascript - [Vue 警告]:渲染错误:“TypeError:无法读取未定义的属性‘audioFiles’
- r - cbind R中的数据框列表
- android - (在 RecyclerView 适配器中)如何在返回同一个 Activity 时完全停止和启动一个 Activity?
- docker - OpenShift - 创建新应用程序时何时创建服务?
- php - 如何在选择少数参数时显示多个高图并使用 PHP 页面动态加载 JSON 数据?
- python - 如何使用yolo3 keras显示边界框的坐标?