我应该在Javascript或后端加密登录密码吗?

时间:2016-08-29 06:39:42

标签: security encryption

我有一个使用Html,Css,Javascript和PhP的小网站。该网站包含一个基本登录页面,用户必须在其中输入密码。然后将所述密码发送给php,然后使用SHA-512对其进行加密并将其添加到数据库中。

所以我开始疑惑。这是做事的首选方式吗?我认为如果我使用javascript加密密码并将其加密到PHP时可能会更好。至少这样,原始密码不会在POST请求中。

但这真的是正确的方法吗?如果有人能看到我正在使用哪种加密方式,那不是很糟糕吗?

2 个答案:

答案 0 :(得分:3)

你必须意识到加密东西客户端并没有解决任何问题。当您发送加密内容并且服务器使用该内容对用户进行身份验证时,该加密值将成为事实上的密码。攻击者只需要拦截请求,读取加密密码并再次发送相同的请求。 加密客户端没有任何好处。

首选解决方案是存储盐渍密码哈希服务器端,发送未加密但未使用SSL / TLS的凭据,然后计算已发送凭证服务器端的哈希值,并将其与存储的值进行比较。

也许看看这里:

会话管理备忘单 - OWASP https://www.owasp.org/index.php/Session_Management_Cheat_Sheet

答案 1 :(得分:0)

  

然后将所述密码发送给php,然后使用SHA-512对其进行加密并将其添加到数据库中。

可能想要学习how to store passwords safely

  

我认为如果我使用javascript加密密码并在已加密时将其发送到php可能会更好。至少这样,原始密码不会在POST请求中。

请参阅:Javascript Cryptography Considered Harmful。 TLS是解决这个问题的正确解决方案,还有很多其他类似的解决方案。