ReactJS是否有发送HTTP请求的方法?

6
我们与一家移动网络运营商(MNO)合作,他们希望在平台上添加HTTP headers enrichment(HE)功能。
MNO能够在HTTP头中注入用户手机号码,这样一来,只要用户使用MNO的移动网络,我们就可以自动验证其身份,无需再登录到平台。手机号码当然是加密的。
MNO有许多客户使用HE,他们使用HTTPS,但他们可以做一些像创建单独的着陆页面这样的事情,用户通过HTTP登陆到该页面,然后从那里获取HTTP头并将其转发到HTTPS页面。显然,HTTPS是加密的,因此这仅适用于HTTP。整个过程必须从客户端完成。
问题在于,我们有一个ReactJS PWA,与普通网站不同,如果您进行任何HTTP请求,它将会出现混合内容错误,因此即使我们创建了一个HTTP着陆页面,我们也无法将响应转发到PWA。是否有解决这个问题的方法?

相比于HTTP落地页,你可以创建一个HTTP JSON端点,向你返回唯一标识用户的令牌。这听起来相当邪恶/不安全,所以我希望我不是这个移动运营商的用户 =) - Evert
@Evert 是的,我可以创建这样的端点,但如果我从 PWA 调用它,由于混合内容而被阻止请求,所以我的问题不在于是否创建页面。甚至调用端点也是不可能的。 - Lynob
我没有意识到这现在默认发生了 O_O。无论如何,浏览器为把用户放在第一位而做得很好。 - Evert
@Evert 如果做得好,它并不像看起来那么不安全。我的意思是,你只需要一个参数,当它被AES加密后,你就可以继续使用HTTPS了,所以唯一可能的攻击是MITM攻击,而且只有在VPN保护的服务器上进行分裂秒才能达到攻击目的,而这个服务器又无法通过互联网访问。即使如此,攻击者也很难解密AES。在现实世界中,积极因素比消极因素多。如果有人非常想要一个手机号码,从社交媒体上获取会更容易,现在每个人都分享一切。 - Lynob
1个回答

2

不行,这是好事。

大多数解决方法现在被主要浏览器阻止了,正如你所说,你会遇到混合内容问题。Firefox 是最后一个默认实现此功能的浏览器,你可以在他们的文档 here 中查看。

对于那些不知道混合内容危险性的人,以下文章给出了一个合理的概述:howtogeek。虽然你认为使用 AES 加密手机号码没问题,但我建议你重新考虑。一般来说,破解手机号码比破解密码容易得多(但也不要发送密码!),并且是身份盗窃的关键组成部分,无论是否可以通过其他方式获取。

在我看来,正确的方法是让用户正常认证。

我在下面引用了来自rfc2616-sec15的摘录,我认为它很相关,并再次鼓励你考虑其他方案。

HTTP 客户端通常可以访问大量的个人信息(例如用户的姓名、位置、邮寄地址、密码、加密密钥等),应该非常小心,以防止通过 HTTP 协议意外泄露这些信息到其他来源。我们强烈建议提供一个方便的接口来控制这些信息的传播,并且在这个领域设计者和实现者特别小心。历史表明,在这个领域的错误经常会创建严重的安全和/或隐私问题,并为实现者的公司带来极其不利的宣传。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接