我目前正在构建几个连接到 API 的网络应用程序(使用 Angular 作为 SPA 构建)。这些应用程序和 API 都使用 SSL。
最近,我们的一些客户需要连接到我们的 API 以进行身份验证(使用来自 OAuth2 的资源所有者密码凭证授予),但他的网站没有使用 SSL。
所以我的问题与安全有关。如果 API 使用 SSL 但请求来源(我客户的网站)未使用,那么发送到 API 的数据是否安全?
使用来自 OAuth2 的资源所有者密码凭据授予,用户凭据实际上作为 POST 发送到 API。那些必须被加密(中间人攻击)。
据我所知,它仍然是安全的,因为客户端需要使用它的密码与服务器握手。但我想确定是这样,非常欢迎解释。
最佳答案
如果您的 API 只能通过 SSL 访问,并且如果客户端正确地(!!)检查您的证书以防止中间人攻击,那么在客户端(即您的客户端服务器)和您的 API 之间发送的数据是安全的,但是仅用于此连接。这种保护不适用于以纯文本形式发送到网站本身的数据,即用户登录:
user(browser) <-- http --> website of client <-- https --> API
^^^^^^ ^^^^^^^
INSECURE SECURE
这意味着用户发送到客户网站然后转发到您的 API 的密码仅在第二步中受到保护,而在第一步中不 protected 。
关于api - SSL:我需要保护每个端点吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119298/