在MVC架构中,应该在哪里进行密码加密

Gra*_*ayB 5 php encryption model-view-controller codeigniter

我正在中等规模的PHP CodeIgniter网站上创建基本密码安全性.我需要开始加密正在保存到数据库中的密码.可以使用不同的方法插入用户密码,包括CSV导入或单独注册方法.

因此,我只想知道MVC系统中应该加密密码的正确级别是什么?

Ale*_*sky 3

您需要执行此功能的唯一时间是添加新用户或更新现有用户的密码时。这两个功能都应该由用户模型执行。例如,类似:

$user = new User();
$user->setName('...');
$user->setPassword('...');
$user->save();
Run Code Online (Sandbox Code Playgroud)

或者:

$user = User::find('...');
$user->setPassword('...');
$user->save();
Run Code Online (Sandbox Code Playgroud)

在此示例中,setPassword() 方法将执行实际的加密。

另外,这样想——不应该将未加密的密码输入系统。因此,您使用户模型成为与用户交互的唯一方式,并让它透明地加密提供给它的所有密码。