boa*_*cow 3 javascript authentication encryption encryption-asymmetric
这里的一些人正在开发一个应用程序,其中包含一些可通过登录访问的"安全区域".过去,登录表单和随后的"安全"页面都是通过http传输的纯文本,因为它是一个应用程序在没有机会使用SSL的共享服务器上使用(想想WordPress等).大多数人只是耸了耸肩,因为这是他们所期望的 - 它几乎不是国家银行.
我们现在考虑使用JavaScript前端编写下一个版本,其优点是加载所有图像和CSS一次,然后使用extJS(或者jQuery)将HTML写入DOM.我们希望在发送到服务器之前在客户端加密用户输入,然后在呈现给HTML之前在浏览器处解密服务器输出,以便为用户引入某种安全性.减少页面加载时间也有所收获,因为我们只是来回发送gzip压缩包.
在玩游戏时,我们意识到我们正在考虑加密基本内容的方法也首先加倍作为登录的身份验证机制.
为简单起见......:
username
,password
并secret
进入一个登录表单.username
,并password
通过AJAX服务器.将secret
只存储在JavaScript和在互联网上永远不会发送.username
并secret
从数据库中检索.username
并secret
返回浏览器.username
和secret
,并将其与从服务器发回的哈希值.response
与secret
和发送消息回服务器.secret
以找到预期response
并启动新会话.secret
.这类系统似乎有一些优点,但我们是否正确思考:
username
并且secret
证明服务器知道并理解username
并且用户知道他们正在与他们的服务器通话secret
.response
与secret
,证明用户知道secret
.secret
不会以纯文本传输,或者是否可以secret
从散列中确定.这一切看起来都很快,以至于用户难以察觉.任何人都可以看到这一点,因为我们都假设我们不应该使用JavaScript加密!