不应通过浏览器检查在 POST 方法上修改表单数据



我有一个PHP中的Web应用程序。我在登录时使用了表单 POST 方法。当我在Firefox浏览器中甚至漏洞报告中进行检查时,我的登录数据(如用户名和密码)变得可见。请给我解决方案而不是SSL证书

唯一正确的方法是SSL,因为它在协议中是加密的。您可以从 https://letsencrypt.org/获得免费证书,安装过程非常简单。

一种 WEAK 解决方法是使用您保持会话中的随机盐对密码进行哈希处理,以检查服务器上的登录:

(
  • 服务器)启动一个会话,生成一个随机字符串,(如$_SESSION['salt'] = 'fffgjgjruydhns');
  • (服务器)将字符串传递给浏览器,在HTML内部;
  • (
  • 浏览器)当用户提交表单时,使用随机字符串对密码进行哈希处理,类似于sha256(密码+随机字符串)
  • (浏览器)将散列字符串发送到服务器
  • (
  • 服务器)检查存储在服务器上的密码是否与从客户端接收的值相同:sha256(storedPassword + $_SESSION['salt']) == $_POST['hashedPassword']。

关于上述算法的一些重要观察:

  • 你必须编写实际的代码,JavaScript中没有函数sha256,可能你应该使用外部库
  • 该算法假设您将用户密码存储在服务器上(不建议这样做,因为您应该存储它的哈希值);

另一种方法是在应用程序级别实现公共-私有系统(服务器生成公钥-私钥,将公钥发送到浏览器,浏览器加密密码,将其发送到服务器,服务器使用私钥解密)。但该系统将比仅仅获得证书更难实施。

因此,首先,尝试设置正常的SSL源代码,从长远来看,它会对您有所帮助。

相关内容

最新更新