共享ASP.NET_SessionId和.ASPXAUTH cookie安全风险
我们正在为一家大公司开发SAAS解决方案,医生可以在其中查看患者并进行突变,订购产品,提供许可证.
该项目适用于一家伞式公司下的4家独立公司.我们为每家公司开发了一个门户网站所有门户使用相同的代码但具有严格的分离数据库,因为数据库包含所有患者信息. 我们使用Sitecore作为CMS. 客户端决定在生产环境中使用虚拟文件夹而不是子域.我们的登台环境网址例如:acc-portal1.umbrella.com.对于生产环境,他们想要一个URL,例如:acc.umbrella.com/portal1.所有门户和请求都使用一个SSL证书. 我们使用Membership Provider(表单身份验证)来验证用户.由于使用了分离的数据库,用户无法使用例如portal1和portal3中的同一帐户登录. 由于客户端希望使用虚拟文件夹而不是子域,因此cookie将通过所有门户共享.可以在web.config中的节点上设置“路径”,但此路径由Sitecore动态读取并在管道中解析.在web.config中加载后,我没有找到覆盖此路径的方法.另外,我没有找到改变ASP.NET_SessionId cookie路径的方法. 我的问题是:在多个门户网站上共享这些cookie是否存在(安全)风险(请记住,它们应该完全分开)?此设置可能导致其他任何问题吗? 希望有人可以帮忙! 解决方法
是的,存在巨大的安全风险.你所做的就是多租户申请.您必须采取特殊步骤以确保无法共享Cookie和其他敏感数据.
我的建议是将租户名称(portal1)存储在表单身份验证cookie的自定义数据部分中.您在发出表单cookie时设置自定义数据. 然后,有一个自定义模块或只是Application_AuthorizeRequest事件的处理程序,其中已经基于cookie建立了标识. 在处理程序中,您从cookie中解密表单身份验证票证,检索用户数据并与实际URL进行比较.如果有匹配 – 没有任何反应.如果没有匹配,则表示用户在一个门户中进行了身份验证,但尝试访问另一个门户.您可以轻轻地清除响应并呈现一条消息“好吧,此门户网站不适合您”或只是将用户注销. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何使用IIS 6在asp.net中实现远期未来的过期标头
- asp.net-mvc-4 – 什么文件夹应该把我的扩展方法在ASP.Net
- asp.net-mvc – 数据注释真的是一个好主意验证吗?
- asp.net-core – 使用[FromBody]时获取原始POST数据
- asp.net – 代码隐藏方法与Jquery AJAX调用
- ASP.NET工作进程仍然以31kb的大小返回数据
- Visual Studio 2017 ASP.NET Core开发
- ASP.NET 5:捕获和记录所有未处理的异常的建议方法是什么?
- asp.net-mvc-3 – 即使密码相同,比较验证器总是会启动
- asp.net – 如何将配置转换应用于外部配置文件
- asp.net-core – project.json中的框架和导入部分
- asp.net – 为什么隐藏字段被认为是客户端状态管
- asp.net – 如何创建一个HTML Helper来扩展TextB
- asp.net – 如何从代码隐藏中清除所有表单字段?
- asp.net-mvc – Asp.Net MVC Ajax.BeginForm没有
- AJAX分页的代码(后台asp.net)
- asp.net-mvc – 在ASP.NET MVC应用程序中放置数据
- 如何不缓存ASP.NET用户控件?
- 依赖性 – 安装RavenDb Embedded的Nuget依赖性错
- asp.net-web-api – 找不到Web API路由404