我的应用程序使用登录/注册系统,使用BCrypt加密密码。当用户注册密码时,使用BCrypt加密,然后存储在mysql数据库中。但是,当用户登录时,出于安全原因,我希望密码也被加密。我可以在将密码放入登录URL之前对其进行加密,但是你可以比较2个哈希值,这样就不会起作用了。
如何在登录请求(url)中加密密码?
我没有很好地解释我的问题,所以我将尝试更详细地解释它。在应用程序中,我有一个发送网址请求的脚本,例如site / login.php?username = name& password = password 当我回顾我的访问者登录我的cpanel时,我可以阅读&密码字段,所以我知道我的用户的密码。这是我想要防止的事情,我想这样做,即使我无法在任何地方看到用户密码
答案 0 :(得分:1)
通过HTTPS连接和POST发送密码,而不是URL。
使用HTTPS将加密除URL的地址部分以外的所有内容。
即使使用HTTPS也使用POST的原因是因为许多服务器记录URL并且通常包含密码。显然,在服务器日志中输入密码是安全故障。
在发送到服务器之前不要对密码进行哈希处理,这只会使哈希成为密码。
在服务器上使用BCrypt
来散列存储密码是一种安全的方法,password_hash
和password_verify
都是安全的,这两种方法都是PHP的常用方法。
答案 1 :(得分:-2)
我认为你在这里使用" GET"登录表单中的方法而不是" POST"
来自w3schools:
绝不使用GET发送敏感数据! (将在URL中显示)
当您将登录详细信息发送到将检查凭据的php页面时,如果您的表单使用the POST method,则密码不会显示在网址中。
编辑:考虑到评论中的内容,虽然它看起来更安全并且是W3 (see Touheed Khan's answer)推荐的,但POST 并非比GET更安全,并且RiggsFolly said:
HTTPS是唯一明智的安全机制