Помощь сеанса CodeIgniter, куки не безопасны? - PullRequest
6 голосов
/ 28 июня 2010

Я только начинаю узнавать о сессиях, и для своих целей я хочу создать что-то, что при каждом запросе от клиента сервер аутентифицирует этого пользователя и только затем выполняет обработку данных для этого пользователя. *

Однако я видел много примеров с CodeIgniter, в которых сеанс настроен следующим образом:

$this->load->library('session');

$newdata = array(
               'username'  => 'johndoe',
               'email'     => 'johndoe@some-site.com',
               'logged_in' => TRUE
           );

$this->session->set_userdata($newdata);

Однако не может ли кто-то просто создать на своем компьютере файл cookie с общим именем пользователя и состоянием «logged_in», равным true, и вдруг вы аутентифицируетесь без пароля? Это кажется мне недостатком безопасности, но я вижу много таких примеров.

Как правильно аутентифицировать пользователя при каждом запросе?

Ответы [ 2 ]

9 голосов
/ 28 июня 2010

В файле application / config / config.php вашей установки codigniter вы можете выбрать шифрование файлов cookie.

$config['sess_cookie_name']  = 'ci_session';
$config['sess_expiration']  = 7200;
$config['sess_encrypt_cookie'] = TRUE;  // set from false to TRUE

Как только это установлено, методы set_userdata () и userdata () будут прозрачно обрабатывать шифрование и дешифрование данных сеанса.

Полный список параметров конфигурации сеанса codigniter находится внизу этой страницы:

http://codeigniter.com/user_guide/libraries/sessions.html

2 голосов
/ 18 сентября 2011

Если вы хотите повысить безопасность, вы можете сохранить данные сеанса в базе данных, изменив следующие строки в вашем CodeIgniter config.php:

$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';

Затем просто создайте следующую таблицу:

CREATE TABLE IF NOT EXISTS  `ci_sessions` (
    session_id varchar(40) DEFAULT '0' NOT NULL,
    ip_address varchar(16) DEFAULT '0' NOT NULL,
    user_agent varchar(120) NOT NULL,
    last_activity int(10) unsigned DEFAULT 0 NOT NULL,
    user_data text NOT NULL,
    PRIMARY KEY (session_id),
    KEY `last_activity_idx` (`last_activity`)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...