我正在使用 basic-auth twitter API( 不再可用)将 twitter 与我博客的评论系统集成。这个和许多其他 Web API 的问题在于它们需要用户的用户名和密码才能执行任何有用的操作。我不想处理安装 SSL 证书的麻烦和成本,但我也不希望密码以明文形式通过网络传递。
我想我的一般问题是: 如何通过不安全的通道发送敏感数据?
这是我目前的解决方案,我想知道它是否有任何漏洞:
- 在服务器上生成一个随机密钥(我使用的是 php)。
- 将密钥保存在会话中,并将密钥输出到 javascript 变量中。
- 在提交表单时, 在 javascript 中使用 Triple DES 和密钥来加密密码。
- 在服务器上,使用会话中的密钥解密密码,然后销毁会话。
最终结果是只有加密的密码通过网络发送,密钥只使用一次并且永远不会与密码一起发送。问题解决了?
原文由 dsims 发布,翻译遵循 CC BY-SA 4.0 许可协议
这避免了通过网络以明文形式发送密码,但它要求您通过网络以明文形式发送密钥,这将允许任何窃听者解码密码。
之前已经说过,我再说一遍:不要试图编写自己的密码协议!已经为这类事情建立了协议,这些协议已经被专业人士创建、同行评审、殴打、攻击、戳戳和督促, 使用它们! 没有人能够想出比整个密码学和安全社区一起工作更好的东西。