我正在努力在中型PHP CodeIgniter网站上创建基本密码安全性。我需要开始加密正在保存到数据库中的密码。用户密码可以使用不同的方法插入,包括CSV导入或单独注册方法。
因此,我只是想知道MVC系统中哪些密码应加密的正确级别?
答案 0 :(得分:2)
您需要执行此功能的唯一时间是添加新用户或更新现有用户的密码。这两个功能都应由User模型执行。例如,像:
$user = new User();
$user->setName('...');
$user->setPassword('...');
$user->save();
或:
$user = User::find('...');
$user->setPassword('...');
$user->save();
在此示例中,setPassword()方法将执行实际加密。
另外,以这种方式考虑它 - 不可能将未加密的密码输入系统。因此,您将User模型作为与用户交互的唯一方式,并使其透明地加密所有给予它的密码。
答案 1 :(得分:0)
这完全取决于您存储密码的方式。
我通常会这样做:
如果您没有使用UserID或运行时生成(即插入)salt,那么您可以同时插入和加密密码。
编辑...
很抱歉,我继承了您对Encrypt的使用,但是对于密码,您“应该”只能使用HASH密码。
一个简单的例子是:
md5(md5(UserID).md5('Password'))
然后,当用户输入他们的电子邮件/用户名和密码时,您只需要:
select * from User where Username = 'myusername' and Password = md5(concat(md5(UserID), md5('Password')))
而不是解密密码。