为什么通过查询参数/自动表单发布进行重定向的数据交换即使在 https 上也不可信?

问题描述 投票:0回答:1

这是一个基本问题,但原因没有在任何地方明确说明。

假设我们有 2 个 Web 应用程序在

https://one.abc.com
htts://two.xyz.com
上运行。 我访问
https://one.abc.com
并显示一个页面,上面有一个按钮,单击后,提交到
https://one.abc.com
并重定向到
htts://two.xyz.com
进行响应。 在
htts://two.xyz.com
上有另一个按钮,单击后,提交到
htts://two.xyz.com
并重定向到
https://one.abc.com
进行响应。

由于一切都通过 https 进行,因此在两个重定向中,URL、查询参数、标头等所有内容都被加密。

使用上述设置,我们可以使用查询参数在 2 个 Web 应用程序之间进行数据交换。此外,我们可以使用 auto-form-post(使用 js 动态创建表单并自动提交)而不是查询参数进行数据交换。

此技术用于 SAML、OIDC 中的 SSO。

为什么即使在 https 上,通过查询参数/自动表单发布使用重定向的数据交换也不能被信任? 请查看以下答案并让我知道我的理解是否正确。

ssl redirect openid-connect saml
1个回答
0
投票

我的回答:

在所描述的从

one.abc.com
two.xyz.com
再回到
one.abc.com
的重定向流程中,TLS(传输层安全)加密是在您的浏览器和涉及的每个服务器之间单独建立的。让我们分解一下流程:

one.abc.com
two.xyz.com

  • 当您单击
    one.abc.com
    上的登录按钮时,您的浏览器会通过 HTTPS(HTTP over TLS)向
    one.abc.com
    发起请求。
  • one.abc.com
    使用重定向响应(HTTP 302 Found)进行响应,指示您的浏览器转到
    two.xyz.com
  • 您的浏览器随后向
    two.xyz.com
    发起新的 HTTPS 请求,在您的浏览器和
    two.xyz.com
    之间建立单独的 TLS 连接。

two.xyz.com
回到
one.abc.com

  • two.xyz.com
    上成功进行身份验证后,它会重定向回
    one.abc.com
    进行响应。
  • 此重定向响应(HTTP 302 Found)包含您的浏览器返回到
    one.abc.com
    的必要信息。
  • 您的浏览器随后向
    one.abc.com
    发起新的 HTTPS 请求,在您的浏览器和
    one.abc.com
    之间建立单独的 TLS 连接。

每个连接(从您的浏览器到

two.xyz.com
以及从您的浏览器返回到
one.abc.com
)均使用 TLS 独立加密。 TLS 加密可确保浏览器和每个服务器之间通信的机密性和完整性,从而保护重定向流期间交换的数据。

但是,在重定向流程期间,

two.xyz.com
one.abc.com
之间没有建立直接的 TLS 连接。相反,HTTPS 连接会在每个服务器端点处单独终止和重新建立。

因此,在 SAML 中,IDP 签署 SAML 断言,而在 OIDC 中,OIDC 提供商签署 id_token。

© www.soinside.com 2019 - 2024. All rights reserved.