Arhn - архитектура программирования

Справка сеанса CodeIgniter, файлы cookie небезопасны?

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

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

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

$newdata = array(
               'username'  => 'johndoe',
               'email'     => '[email protected]',
               'logged_in' => TRUE
           );

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

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

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


  • Интересно то же самое: почему CI просто не использует сеансы php и не предоставляет им какой-то интерфейс CI-ish? Это правда, что вы можете использовать базу данных, но что в первую очередь плохого в «нормальных» сессиях? 28.06.2010
  • Библиотека сеансов Codeigniter предназначена для того, чтобы сделать сеансы более гибкими и избавить от работы с сеансами. Он действительно работает очень хорошо, и если вы храните сеансы в базе данных, принудительная проверка уникального идентификатора сеанса. Codeigniter прозрачно обрабатывает как настройку, так и проверку идентификатора сеанса. Здесь есть интерфейс для собственных сеансов для codigniter: codeigniter.com/wiki/Native_session 28.06.2010
  • Сессия не означает cookie. Сессия существует только на сервере и вне досягаемости злоумышленника. Cookie просто содержит идентификатор сеанса, который представляет собой непрозрачную и случайную строку. Сервер использует идентификатор сеанса для поиска объекта сеанса для текущего пользователя. Короче говоря, файл cookie не содержит флаги имени пользователя / электронной почты / logged_in, и, следовательно, злоумышленник не может изменять их напрямую. 28.06.2010
  • @sri: это не так для codeigniter. 01.07.2010
  • @Daniel - Спасибо за замечание. Я только что прочитал codeigniter.com/user_guide/libraries/sessions.html, и вы справа - CodeIgniter по-другому обрабатывает сеанс. 01.07.2010

Ответы:


1

В файле 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

28.06.2010
  • Хорошо, звучит хорошо. Единственное, что меня интересует, так ли это безопасно, как хранение данных сеанса в базе данных? Если кто-то взломает шифрование файлов cookie, они теперь могут подделать файл cookie для любого пользователя (угадывая имена пользователей) вместо того, чтобы просто получить доступ к учетной записи одного пользователя. 28.06.2010
  • Если это вызывает беспокойство, почему бы вам не использовать базу данных для хранения сеансов? Таким образом, вы можете проверить идентификаторы сеанса в дополнение к зашифрованному файлу cookie. Если вас беспокоит безопасность, вам действительно следует использовать базу данных. См. Раздел Сохранение данных сеанса в базе данных руководства пользователя CI: demos.softaculous.com/CodeIgniter/user_guide/libraries/ 28.06.2010

  • 2

    Если вы хотите повысить безопасность, вы можете сохранить данные сеанса в базе данных, изменив следующие строки в вашем 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`)
    );
    
    18.09.2011
  • Хорошее объяснение здесь: christopherickes.com/web-app- development /, который также предлагает изменить: $ config ['sessions_cookie_name'] = 'ci_session'; в $ config ['sessions_cookie_name'] = 'cisession'; для совместимости с IE 28.11.2012
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..