我目前正在构建连接到API的多个Web应用程序(使用Angular构建为SPA)。这些应用和API都使用SSL。
最近,我们的一些客户需要连接到我们的API进行身份验证(使用来自OAuth2的资源所有者密码凭据授权),但他的网站不是使用SSL。
所以我的问题与安全性有关。如果API使用SSL但请求来源(我的客户网站)不是,那么发送到API的数据是否安全?
使用来自OAuth2的资源所有者密码凭据授予,用户凭据实际上作为POST发送给API。那些必须被加密(中间人攻击)。
根据我的理解,它仍然是安全的,因为客户端需要使用它的密码来握手服务器。但我想确定如此,解释非常受欢迎。
答案 0 :(得分:1)
如果您的API只能通过SSL访问,并且客户端正确(!!)检查您的证书以防止中间人攻击,那么客户端(即您的客户端服务器)和您的API之间发送的数据是安全的,但仅用于此连接。此保护不会扩展到以纯文本形式发送到网站本身的数据,即用户登录:
user(browser) <-- http --> website of client <-- https --> API
^^^^^^ ^^^^^^^
INSECURE SECURE
这意味着用户发送到客户网站然后转发到您的API的密码仅在第二步中受到保护,但不在第一步中受到保护。
答案 1 :(得分:1)
这里涉及两种不同的情况如下。
1)用户与您的客户网站交换信息。 (非安全渠道)
正如您所说客户网站没有使用SSL,这意味着最终用户的所有个人信息都将被传输到纯文本中,网络犯罪分子可以通过行动中的人员轻松获取数据。中间,窃听和其他网络攻击。
2)客户网站数据与API通信。 (安全通道)
在这种情况下,您的客户网站是不安全的,但您的API使用HTTPS协议是安全的,因此客户网站和API之间的所有通信都将转换为加密方式,因此没有人可以在传输过程中中断数据。 / p>