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

时间:2019-06-04 04:11:14

标签: php-5.5

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

1 个答案:

答案 0 :(得分:0)

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

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

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

关于上述算法的一些重要发现:

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

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

因此,首先,尝试设置常规的SSL加密环境,从长远来看将对您有帮助。