2017-04-20 179 views
-4

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

我该如何加密登录请求(url)中的密码?

我没有很好地解释我的问题,所以我会试着更详细地解释它。在应用程序中,我有一个发送url请求的脚本,例如site/login.php?username = name & password = password 当我回头看我的访问者登录我的cPanel时,我可以读取&密码字段,所以我知道我的用户的密码。这就是我想要阻止的事情,我想让它不能看到任何地方的用户密码

+4

为什么你想在url中发送密码? –

+1

*“但是,当用户登录时,出于安全原因,我想要对密码进行加密”* - 嗯......已经散列了。散列和加密是两种不同的动物。问题不清,恕我直言。 –

+1

他的意思是说:*他想要加密用户在登录表单中输入的密码,然后将这个密码作为URL参数发送,例如:'login.php?u = username&p = encrypted_pa​​ssword' *通过这些方式; @NorthSeaDevs为什么你现在要发送密码在URL加密?您可以在同一页上处理/验证登录凭证,然后只需**重定向到另一页**:如果需要。 – Poiz

回答

-2

我认为在登录表单中使用“GET”方法会导致错误,而不是在 “POST”

从W3Schools的:

永远不要使用GET发送的敏感数据! (将在URL中可见)

当你发送的登录信息到PHP页面,将检查的凭据,如果你的表单使用the POST method,密码不会出现在URL中。

编辑:考虑到什么在评论中说,虽然它看起来更安全,并通过W3 (see Touheed Khan's answer)建议,POST 更安全比GET和,为RiggsFolly said

HTTPS是唯一明智的安全机制

+0

这不是不使用POST的原因,有人可以像GET请求一样轻松地嗅探POST请求。区别在于web服务器不会在访问日志中记录POST请求的内容,但它们会记录GET请求。 – JamesHalsall

+0

另外,使用GET/POST即使在SSL套接字中使用纯文本密码也同样安全。 –

+0

@JamesHalsall谢谢,我不知道这两种请求类型都可以轻松地被嗅探到! –

1

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

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

甚至在使用HTTPS时使用POST的原因是因为许多服务器都记录了URL并且通常会包含密码。显然在服务器日志中输入密码是安全失败。

不要在发送到服务器之前对密码进行哈希处理,只是将哈希值设为密码。

在服务器上使用BCrypt哈希存储密码是安全的方法是password_hashpassword_verify,双方共同为PHP。