登录URL中的BCrypt哈希密码

时间:2017-04-20 14:13:56

标签: php mysql encryption bcrypt

我的应用程序使用登录/注册系统,使用BCrypt加密密码。当用户注册密码时,使用BCrypt加密,然后存储在mysql数据库中。但是,当用户登录时,出于安全原因,我希望密码也被加密。我可以在将密码放入登录URL之前对其进行加密,但是你可以比较2个哈希值,这样就不会起作用了。

如何在登录请求(url)中加密密码?

我没有很好地解释我的问题,所以我将尝试更详细地解释它。在应用程序中,我有一个发送网址请求的脚本,例如site / login.php?username = name& password = password 当我回顾我的访问者登录我的cpanel时,我可以阅读&密码字段,所以我知道我的用户的密码。这是我想要防止的事情,我想这样做,即使我无法在任何地方看到用户密码

2 个答案:

答案 0 :(得分:1)

通过HTTPS连接和POST发送密码,而不是URL。

使用HTTPS将加密除URL的地址部分以外的所有内容。

即使使用HTTPS也使用POST的原因是因为许多服务器记录URL并且通常包含密码。显然,在服务器日志中输入密码是安全故障。

在发送到服务器之前不要对密码进行哈希处理,这只会使哈希成为密码。

在服务器上使用BCrypt来散列存储密码是一种安全的方法,password_hashpassword_verify都是安全的,这两种方法都是PHP的常用方法。

答案 1 :(得分:-2)

我认为你在这里使用" GET"登录表单中的方法而不是" POST"

来自w3schools:

  

绝不使用GET发送敏感数据! (将在URL中显示)

当您将登录详细信息发送到将检查凭据的php页面时,如果您的表单使用the POST method,则密码不会显示在网址中。

编辑:考虑到评论中的内容,虽然它看起来更安全并且是W3 (see Touheed Khan's answer)推荐的,但POST 并非比GET更安全,并且RiggsFolly said

  

HTTPS是唯一明智的安全机制