我有一个使用Html,Css,Javascript和PhP的小网站。该网站包含一个基本登录页面,用户必须在其中输入密码。然后将所述密码发送给php,然后使用SHA-512对其进行加密并将其添加到数据库中。
所以我开始疑惑。这是做事的首选方式吗?我认为如果我使用javascript加密密码并将其加密到PHP时可能会更好。至少这样,原始密码不会在POST请求中。
但这真的是正确的方法吗?如果有人能看到我正在使用哪种加密方式,那不是很糟糕吗?
答案 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是解决这个问题的正确解决方案,还有很多其他类似的解决方案。