如何建立一个完全安全的登录:我需要SSL吗?

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

上下文

我正在建立一个项目来更好地了解登录安全,而SSL真的让我很困扰。目前我有一个前端(vue.js),一个API(nodeexpress)和一个DB(postgreSQL)。

这是一般的认证流程。

  • 当用户登录时,他们向API发送电子邮件和密码(通过Axios)。
  • API会在数据库中查询匹配的用户名,然后使用bcrypt.compare检查数据库中的哈希密码。
  • 如果成功的话,API会签署一个JWT,并将其发送给客户端。
  • 然后,客户端将JWT保存在本地存储中,并用于未来的查询。

问题

到目前为止,我认为以上所有的做法都是最好的,除了第一步。根据我目前所做的阅读,客户端需要SSL来安全地发送密码到API。是这样吗?我的服务器是否也需要SSL或者只是cliententhost?

我最终打算尝试用firebase主机(自动SSL)做前端,用heroku做API和数据库。如果有更安全的选择,我愿意接受建议。

另外,总的来说,我对这些安全方面的东西很陌生--如果我遗漏了什么,或者有什么不安全的地方,我希望得到建议。

node.js firebase security ssl heroku
1个回答
2
投票

SSL在两点之间建立安全连接。在我们的方案中,客户端和服务器之间。经过一些初始的协商,客户端将其消息加密,只有服务器可以解密。而服务器也会对它的答案,或者它自己的问题进行同样的处理。 通过在这两个端点之间使用SSL,除了客户端和服务器之外,没有人可以读取消息。

这一点很重要,因为在客户端和服务器之间发送的消息实际上会被中间更多的机器进程看到。因此,其他几十个进程都可以看到消息,如果消息没有加密,就意味着所有这些进程都可以知道消息中的具体内容。当客户端和服务器通过SSL通信时,其他进程仍然可以看到消息,但他们无法解密。

对于你的具体问题:客户端打开了与服务器的安全连接。客户端和服务器都需要支持这个功能。如果你写了一个自定义服务器,这意味着你需要确保它有一个SSL证书。现在一个很常见的免费获得这些证书的地方是 letsencrypt.org.

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