将使用HTTP进行的API调用redirect到我的服务器到HTTPS是安全的吗?

我有一个通过REST API与HTTP通信的Nodejs服务器。 我现在想改变从HTTP到HTTPS的所有请求的传输协议。 问题是我无法更改客户端代码。

我想知道是否将服务器上的所有HTTP请求redirect到https足以使数据与encryption一起发送。 或者,如果我必须修改在客户端上运行的代码,并使用HTTP协议进行请求。

我必须这样做,因为数据不应该被清晰地发送,因为有一些敏感的数据被发送(用户名,密码,位置信息)。

谢谢。

使用HTTPS的目的不仅仅是encryption。 它还提供服务器到客户端的身份validation等。

有一个客户端发出普通的http请求(不pipe是否被redirect)的一个问题是攻击者可能会创build一个假的服务器,客户端可能会与之通信,揭示秘密或拉扯假数据。 最初没有通过https进行请求,没有什么可以阻止攻击者这样做。

更糟糕的是,攻击者只能监听真实服务器的stream量。 如果可能出现中间人攻击(例如攻击者与客户端或服务器位于同一本地networking中),则攻击者可以劫持最初的明文请求,通过HTTPS与API交谈,然后对普通的http响应客户端,等等,为所有的请求。 从客户的angular度来看,从服务器的angular度来看,它“正常工作”,这一切都很好,在https上。

这被称为SSL剥离 。

所以唯一的解决办法是让客户端通过https执行所有请求(包括第一个请求)。 一种确保浏览器客户端的方法是使用Strict-Transport-Security (HSTS)响应头。 对于非浏览器客户端,您可以实现它们以符合HSTS或通过https进行所有请求。