【发布时间】:2010-09-07 12:28:02
【问题描述】:
我正在使用 basic-auth twitter API (no longer available) 将 twitter 与我博客的评论系统集成。这个和许多其他 Web API 的问题是它们需要用户的用户名和密码才能做任何有用的事情。我不想处理安装 SSL 证书的麻烦和成本,但我也不希望密码以明文形式通过网络传递。
我想我的一般问题是:如何通过不安全的渠道发送敏感数据?
这是我目前的解决方案,我想知道其中是否有任何漏洞:
- 在服务器上生成一个随机密钥(我用的是php)。
- 将密钥保存在会话中,并将密钥输出到 javascript 变量中。
- 在提交表单时,使用Triple DES in javascript 和密钥来加密密码。
- 在服务器上,使用会话中的密钥解密密码,然后销毁会话。
最终结果是只有加密的密码通过网络发送,并且密钥只使用一次,并且永远不会与密码一起发送。问题解决了吗?
【问题讨论】:
-
你做不到。 SSL 很昂贵,因为所有浏览器都信任的第三方已经验证您的服务器是给定域名的真实服务器。当攻击者可以强迫用户认为他们的服务器是您的域的主机并且这种攻击需要瞬间在 wifi 或以太网网络(图书馆、学校、办公室等)上执行时,加密是无用的。请参阅 security now 播客的背面目录以了解所有问题,您很快就会决定从便宜的人那里购买 SSL 证书更容易、更便宜。
标签: javascript security encryption passwords