2013-05-17 62 views
0

我有一个名为User的类,它存储用户信息。在我创建帐户时存储的一个字段(它不会存储在类中)否则是哈希密码。我应该在课堂内部还是外部散列密码?

密码经由从用户与MySQL数据插入处理中创建一个POST一个帐户到另一个页面通过从等

我的问题是,我要通过原始$_POST['password']字段插入并将其散列到类中,还是应该在外部散列密码并将散列传递给类以进行存储?

我无法看到任何真正的正或负来摆动我。我永远不会从数据库中调用密码哈希在用户类中使用(我不会使用用户类进行登录验证)。

+3

只是不要问数据库服务器散列它。 –

回答

2

不存在安全concery通过你的类明文密码。重要的是在永久保存之前对其进行哈希处理。 (记住:在保存到会话是永久性的,因为会话数据保存到磁盘)。 类及其所有数据只存在于谁进入明文密码的用户。

我会建议在课堂内做到这一点:这使您可以在中心点添加盐分和其他机制。

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

此致敬礼。

0

嗯,你说得对两种解决方案都不错。除非你使用一些约定,那么你应该坚持下去。无论如何,更重要的是,随着编写代码的方式而结束。所以阅读起来会比较容易,即使是在一段时间之后。

3

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

就像Zsolt所说的那样,将它哈希化成您的类允许使用salt机制。

相关问题