https不可用时保护登录

时间:2011-11-26 17:53:52

标签: php security login

我正在为一个没有处理或存储关键或私人信息的网络应用程序实现一个简单的登录系统,我想为登录数据传输提供窃听保护。

我已经运行了apache的https模块,但由于端口访问限制和其他一些问题,有时无法选择,

为了不使事情过于复杂,并且在这些情况下仍然提供相当好的保护,这是我对快速且廉价的协议的想法,而我关于它的重要问题是,如果(以及为什么,如果你愿意)是它任何好的或大的禁忌做这种解决方法:

  1. 在登录表单上,客户端收到2个随机长度(不太短而不太长)的文本字符串(服务器生成并保留$ _SESSION var仅用于一次检查)以及服务器的公共gpg密钥。

  2. 用户+ string1和pass + string2是javascript gpg编码的服务器公钥,然后发送到服务器。

  3. 服务器恢复传输的登录信息gpg使用私钥解密并删除字符串,哈希传递检查是否存在为该用户存储的匹配,返回登录错误/授予对该用户的配置文件的访问权限直到结束会议。

  4. 据我所知,这只能保护登录信息(而不是针对伪造服务器的任何中间人攻击,如果我需要这个,我会简单地强制使用https),这与一些基本的sessionid防盗技术相结合应该可以防止被动如果我是对的,窃听者可以使用被盗的凭据来访问系统。

    我应该实现这个还是浪费时间和资源?

1 个答案:

答案 0 :(得分:3)

当您在几毫秒之后泄漏真实身份验证令牌(会话ID)时,保护登录毫无意义。会话ID必须在整个生命周期内使用HTTPS保护,此值不会通过纯文本传输,否则您将明显违反OWASP a9

攻击者都像: “哦,你很好,我认证了这个会话,我只需要拿那个cookie值并作为该用户进行身份验证,谢谢!”