0

我想实现一种登录机制来验证我的网络应用程序的管理员。但是由于我没有使用 ssl,所以我不能依赖用户通过 html 表单发送他的密码。

所以我想到了使用一次性密码(我其实不知道这个东西,我最终重新发明了这个概念,最终发现这样的东西已经存在了)

我想要的只是您对我的实施安全性的看法:

1) 客户端请求一个随机且唯一的哈希。服务器生成该散列,将其存储在会话变量中并将散列​​返回给客户端。

2) 客户端使用只有他和服务器知道的自定义算法从该哈希中导出密码。该密码被发送回服务器。

3)服务器做同样的事情并检查密码是否匹配,如果它们匹配,则用户已通过身份验证。

这完全可以破解吗?

4

1 回答 1

5

“只有他和服务器知道的自定义算法”。这被设计破坏了,因为您完全依赖于保密的算法。

一旦您分发实现(例如作为客户端 JavaScript),它就不再是秘密,更不用说协议中的任何内在弱点了。

我的 2cents:除非你是加密专家,否则永远不要推出自己的解决方案。坚持使用公开的、健全的和经过验证的协议,并且只使用有信誉的实现。

于 2014-02-22T00:53:25.853 回答