|
|
1
2
由于这是一个相当大的问题,我可能更容易向您介绍一些有用的资源,而不是试图自己解释。 关于网络密码学的介绍A List Apart wrote a nice article 。它不太讨论实现,但提供了一个很好的概述。 有关安全缺陷列表以及如何解决这些问题,请参阅 OWASP Top Ten Project 。 这是一个指南 PHP Security 这是相当全面的。 最后,请参阅 this question 了解有关创建登录系统的更多信息。 我建议你在Stack Overflow周围搜索,因为你可能有一些问题的好答案。 |
|
|
2
1
作为salt,它只是一个随机字符串,添加到您想要编码的字符串的哈希中,有足够的方法来生成它[例如。 this on SO ]。 您不需要也无法解密任何sha结果,因为sha(类似于md5)是 散列 算法,而不是 地下室 函数,也就是说,它并不意味着隐藏任何内容以供以后检索:这很重要,因为我不希望我注册的网站的管理员从数据库中读取我的密码。 散列是将一个数据集的元素映射到另一个数据集中的较短元素,以[几乎全部] injective way -您可以将任意长字符串映射到固定长度的键:这使您可以在不知道原始值的情况下在哈希域中进行比较。
我说
几乎
因为散列算法有一些冲突[例如,前面语句的例外,例如
也就是说,以下是您将密码保存到数据库的方式:
代码中:
Pwd对照
代码中:
关于在URL中隐藏值,这更像是一个SEO/可读性主题,而不是一个安全主题:URL应该在路由时生成[例如。
关于MySQL注入,我们从 prepared statements 从…起 PDO extension 。 关于这个问题,有数百万个答案,所以,看看周围吧。 坚持你的工作! |
|
|
3
1
这并不是你问题的直接答案,但请查看phpass http://www.openwall.com/phpass/ 它将为您处理salting,并经过许多安全专家的审查,被认为是一个非常好的密码哈希工具 |