【问题标题】:Codeigniter 2.1 - Security for the admin part of the web siteCodeigniter 2.1 - 网站管理部分的安全性
【发布时间】:2013-01-19 16:52:04
【问题描述】:

我有以下措施来保护管理部分:

  • 在会话内部我有以下部分:

is_logged_in -> 这可以是 0 或 1

admin -> 检查用户是否为管理员(值为 0 或 1)

在管理控制器或与网站管理有关的控制器中的任何函数之前,我调用函数来检查用户是否已登录并且他是否是管理员?这够了吗?如果不是,我该怎么做才能使管理部分更安全?

【问题讨论】:

  • 不是答案,但可能对您有用:您看到了吗? stackoverflow.com/questions/3819275/…
  • 所以你只设置了一次并在每一页上检查它?如果这就是你正在做的,那么它是不安全的。您必须从数据库中提取这些值(将会话存储在 db 中并查询以确保 session_id() == $db->session_id,并确保您也从 db 中检索 is_admin 标志)这样您可以随时将用户踢出去。

标签: php codeigniter codeigniter-2


【解决方案1】:

一种简单的会话形式是

$data = array(
    "admin" => $username,
    "is_logged_in"  => true
);
$this->session->set_userdata($data);

但您也可以在会话中存储 id(如果需要)或其他内容。

如果你想检查它,你可以这样做

if (!isset($this->session->userdata['admin'])) {
    redirect('admin/login'); // for example
}

我更喜欢将会话存储在数据库中。

更多信息,请阅读 http://ellislab.com/codeigniter/user-guide/libraries/sessions.html

【讨论】:

    【解决方案2】:

    您应该查看 Phil Sturgeon 的博文 here

    当您有一个需要单独身份验证的整个部分时,扩展 CI_Controller 将为您节省大量代码并使事情变得更加简洁。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多