安全性何时对 CodeIgniter 变得至关重要?
When does security becomes critical with CodeIgniter?
我构建了一个应用程序,我的客户可以在其中处理其客户的数据。因此,这是一个非常安全的数据集。
为了保护我的应用程序,我添加了一个自定义的 auth guard 过滤器,用于检查用户是否有会话 isLoggedIn
。我将此过滤器添加到每个安全路由:
//AuthGuard.php
class AuthGuard implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
if (!session()->get('isLoggedIn')) {
return redirect()->to('/login');
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
}
}
//Routes.php
$routes->add('/list_customer', 'Customer::list_customer', ['filter' => 'authGuard']);
我的 LoginController
正在设置此会话:
$session_data = [
'id' => $employee->id,
'name' => $employee->name,
'email' => $employee->email,
'isLoggedIn' => true,
'level' => $employee->level,
];
$this->session->set($session_data);
return redirect()->to('/dashboard');
当用户登录时,一旦通过 auth guard 就可以访问的不同控制器会显示数据库中可用的几乎所有数据。我假设,我不需要保护我的模型(就像使用 JWT 一样),因为所有应用程序内容只能在用户登录时访问。
例如:
class Customer extends BaseController
{
public function list_customer()
{
$customer_model = new CustomerModel();
$data['all_customer'] = $customer_model->findAll(); // <-- this will show ALL customer data. Very very sensitive data!
return view('list_customer', $data);
}
没关系。我唯一推荐的(不是你做错了,这只是一种偏好)是在 Config\Filters
下使用 $filters
而不是为每个路由器定义过滤器。
https://codeigniter4.github.io/userguide/incoming/filters.html#filters
这个对我来说比较方便,你自己选
我构建了一个应用程序,我的客户可以在其中处理其客户的数据。因此,这是一个非常安全的数据集。
为了保护我的应用程序,我添加了一个自定义的 auth guard 过滤器,用于检查用户是否有会话 isLoggedIn
。我将此过滤器添加到每个安全路由:
//AuthGuard.php
class AuthGuard implements FilterInterface
{
public function before(RequestInterface $request, $arguments = null)
{
if (!session()->get('isLoggedIn')) {
return redirect()->to('/login');
}
}
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
}
}
//Routes.php
$routes->add('/list_customer', 'Customer::list_customer', ['filter' => 'authGuard']);
我的 LoginController
正在设置此会话:
$session_data = [
'id' => $employee->id,
'name' => $employee->name,
'email' => $employee->email,
'isLoggedIn' => true,
'level' => $employee->level,
];
$this->session->set($session_data);
return redirect()->to('/dashboard');
当用户登录时,一旦通过 auth guard 就可以访问的不同控制器会显示数据库中可用的几乎所有数据。我假设,我不需要保护我的模型(就像使用 JWT 一样),因为所有应用程序内容只能在用户登录时访问。
例如:
class Customer extends BaseController
{
public function list_customer()
{
$customer_model = new CustomerModel();
$data['all_customer'] = $customer_model->findAll(); // <-- this will show ALL customer data. Very very sensitive data!
return view('list_customer', $data);
}
没关系。我唯一推荐的(不是你做错了,这只是一种偏好)是在 Config\Filters
下使用 $filters
而不是为每个路由器定义过滤器。
https://codeigniter4.github.io/userguide/incoming/filters.html#filters
这个对我来说比较方便,你自己选