我正在设置一个家庭 HTTP 服务器,它可以向/从不同的客户端(Android 和 iPhone 应用程序)发送和接收 JSON 数据。
我想只允许某些用户访问,并且我正在考虑使用简单的用户名/密码机制,因为设置客户端证书对于这个小项目来说似乎有点矫枉过正。
当然,我不能通过纯 HTTP 从客户端向服务器发送明确的密码,否则任何安装了 wireshark/tcpdump 的人都可以读取它。所以,我正在考虑以下机制:
- HTTP 服务器可以设置为 HTTPS 服务器
- 服务器还有用户名/密码数据库(密码可能用 bcrypt 保存)
- 客户端打开 HTTPS 连接,它对服务器进行身份验证(因此需要服务器证书),并且在交换主密钥后,连接应该被加密。
- 客户端将用户名/密码明文发送给服务器
- 服务器对密码运行 bcrypt 并将其与存储在数据库中的密码进行比较
这种配置有问题吗?密码应该是安全的,因为它是通过加密连接发送的。