如何在注册期间传输密码(PHP和SQL)


How to transmit password during registration (PHP & SQL)

我知道任何试图实现用户身份验证的人的标准答案都是使用现成的、经过测试的库,但我一直喜欢重新发明轮子。

我用PHP创建了一个用户身份验证和会话数据系统,使用质询-响应技术登录。所有私有页面在开始时都需要一个功能,用于验证会话超时、ip、浏览器和256位令牌密钥的会话检查。验证会话后,它重置超时并生成一个新的令牌密钥。

然而,我目前看到的最大弱点是用户注册。我还没有写,但看起来我必须从客户端向服务器传输明文或哈希版本的密码。无论哪种方式,如果数据包被捕获,窥探者都拥有登录所需的一切。

有没有一种简单的方法可以在客户端加密它并在服务器端解密它?或者,可能会通过延迟和伪数据包将其分块发送。

此外,如果我可能错过了任何其他问题,请告诉我。

  • 登录请求挑战盐,客户端在发送密码之前对其进行散列
    散列(hash(password))。盐)
  • 要持久化会话,客户端必须具有最新的令牌密钥和相同的浏览器&创建会话的用户的IP
  • 自然地,所有用户输入&查询之前会检查ajax响应

确实有一个正确答案:使用HTTPS。基于HTTP的SSL是唯一能够完全确保安全的解决方案。

您不能在这里进行任何javascript检查,因为salt将被暴露。这不是正确的方法。

有没有一种简单的方法可以在客户端加密它并在服务器端解密它?

使用HTTPS怎么样?