gpt4 book ai didi

asp.net - 共享 ASP.NET_SessionId 和 .ASPXAUTH cookie 安全风险

转载 作者:行者123 更新时间:2023-12-01 02:21:37 24 4
gpt4 key购买 nike

我们正在为一家大公司开发 SAAS 解决方案,在该解决方案中,医生可以查看患者并进行突变、订购产品、提供许可证。
该项目适用于一家伞式公司下的 4 家独立公司。我们为每家公司开发了一个门户。所有门户都使用相同的代码,但具有严格分离的数据库,因为该数据库包含所有患者信息。
我们使用 Sitecore 作为 CMS。

客户决定在生产环境中使用虚拟文件夹而不是子域。我们的暂存环境 url 例如:acc-portal1.umbrella.com。对于生产环境,他们需要一个 URL,例如:acc.umbrella.com/portal1。一个 SSL 证书用于所有门户和请求。

我们正在使用 Membership Provider(表单例份验证)来进行用户身份验证。由于使用了分离的数据库,用户不能在例如portal1 和portal3 中使用相同的帐户登录。
因为我们正在使用表单例份验证,所以正在使用“.ASPXAUTH”cookie。当然也使用了“ASP.NET_SessionId”cookie。

因为客户端想要使用虚拟文件夹而不是子域,所以 cookie 在所有门户上共享。可以在 web.config 中的节点上设置“路径”,但此路径由 Sitecore 动态读取并在管道中解析。在 web.config 中加载此路径后,我没有找到覆盖此路径的方法。我也没有找到改变 ASP.NET_SessionId cookie 路径的方法。

我的问题是:通过多个门户共享这些 cookie 是否存在(安全)风险(请记住,它们应该完全分开)?此设置可能会导致任何其他问题吗?

希望有人能帮忙!

最佳答案

是的,存在巨大的安全风险。您所做的称为 Multi-Tenancy 应用程序。您必须采取特殊措施确保无法共享 cookie 和其他敏感数据。

我的建议是将租户名称 (portal1) 存储在表单例份验证 cookie 的自定义数据部分中。您在发出表单 cookie 时设置自定义数据。

然后,拥有一个自定义模块或只是 Application_AuthorizeRequest 的处理程序事件,其中已经基于 cookie 建立了身份。

在您的处理程序中,您从 cookie 中解密表单例份验证票证,检索用户数据并与实际 url 进行比较。如果有匹配 - 什么都不会发生。如果没有匹配,则意味着用户在一个门户中通过了身份验证,但尝试访问另一个门户。您可以轻轻清除响应并呈现一条消息“好吧,此门户不适合您”,或者只是将用户注销。

关于asp.net - 共享 ASP.NET_SessionId 和 .ASPXAUTH cookie 安全风险,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com