我正在尝试创建自己的登录系统,我想知道散列密码的最佳方法是什么?
我应该只使用 PHP SQL hash('SHA512' password)
中的函数还是应该使用 JavaScript?
我已经让系统通过 PHP SQL 和 SHA512
进行散列,但如果使用 JavaScript 更安全,我不介意转移。
所以我要问的是,使用 JavaScript 和 PHP 进行散列的优缺点是什么。
如果你也能告诉我 SALT
的含义,那会很酷,我还没有真正理解它的确切含义,以及我为什么要这样做。
是的,我知道有很多很好的登录系统我可以复制/粘贴,但这主要是为了了解它是如何工作的并获得一些经验。
用户显然担心 JavaScript 可能被禁用。这可以通过让您的编码系统预先添加一些无法插入的内容来“解决”,例如 \x01
或类似的不可打印字符。通过这种方式,您的服务器可以检查第一个字符是否为 \x01
,如果不是,则它可以应用 JavaScript 应该执行的任何操作。
因此,解决该问题后,您还需要考虑 JavaScript 中的任何内容都清晰可见。任何恶意用户都可以轻松阅读您的 JS 源代码并准确了解加密是如何完成的。因此,您不能完全依赖 JavaScript 来加密您的数据。您必须还使用服务器端代码来进一步保护它。
从好的方面来说,任何阻止通过 HTTP 以纯文本形式发送密码的方法都是好事,但这正是 SSL (https://
) 的用途。
所以基本上,JavaScript 中的加密可以被视为“穷人的 SSL”,但是它真的提供的安全性并不比服务器所能提供的更多。