安全性何时对 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

这个对我来说比较方便,你自己选