【问题标题】:Form data should not be modified on POST method through browser inspect不应通过浏览器检查在 POST 方法上修改表单数据
【发布时间】:2019-10-19 14:12:12
【问题描述】:

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

【问题讨论】:

  • 你真的应该使用 SSL。您是否有要查看的代码示例?

标签: php-5.5


【解决方案1】:

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

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

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

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

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

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

所以,首先,尝试设置一个正常的 SSL 环境,从长远来看,它会对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-23
    • 2020-10-16
    • 1970-01-01
    • 2010-10-05
    • 2010-10-11
    • 2017-11-01
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多