0

我有一个名为 User 的类,它存储用户信息。在我创建帐户时存储的一个字段(否则它不存储在类中)是散列密码。

当用户在 POST 中创建帐户时,密码通过 from from from 传递到另一个页面,以使用 MYSQL 数据插入等进行处理。

我的问题是,我应该将原始$_POST['password']字段传递给类并在类内部对其进行散列,还是应该在外部对密码进行散列并将散列传递给类进行存储?

无论哪种方式,我都看不出有任何真正的正负让我摇摆不定。我永远不会从数据库中调用密码哈希以在用户类中使用(我不会使用用户类进行登录验证)。

4

3 回答 3

3

取决于您是否也使用 HTTPS 连接。如果是这样,您可以将密码散列到您的代码中,因为它不会被看到。使用 Javascript 散列密码需要一些代码(因为没有直接在 MD5 或 SHA1 中散列的函数)

就像 Zsolt 所说,将其散列到您的类中允许使用盐机制。

于 2013-05-17T13:08:52.117 回答
2

传递您的班级纯文本密码没有安全隐患。重要的是在永久保存之前对其进行哈希处理。(记住:将其保存到会话中是永久性的,因为会话数据保存在磁盘上。)该类及其所有数据仅对输入纯文本密码的用户显示。

我建议在课堂上这样做:这使您能够在中心位置添加盐渍和其他机制。

请记住,您将在注册过程中对密码进行其他检查:最小长度、允许的字符等。所以散列必须在所有这些之后发生。由于您希望能够同时启用 COntroller 和 Model 以添加进一步的检查,因此您需要在最新的可能位置进行散列:在 $user->save() 或 ORM 类中(如果使用)。

此致。

于 2013-05-17T13:05:19.043 回答
0

好吧,您是对的,两种解决方案都很好。除非你使用一些约定,否则你应该坚持它。无论如何,更重要的是你在编写代码的方式上有所作为。所以它会更容易阅读,即使是你一段时间后。

于 2013-05-17T13:04:19.590 回答