Intereting Posts
как проверить путь к файлу – это изображение или нет в php? Вкладка и препровождение в JSON-выход в Chrome Сортировка ассоциативного массива по значению в порядке убывания и сохранения, когда значения одинаковы php включает проблему Как получить строку между последними вложенными `(` и `)`? Платежные платежи PayPal API экземпляр codeigniter класса модели Любой способ получить все строки таблицы, где внешний ключ совпадает с первичным ключом, используя только модели, а не напрямую обращаться к базе данных? Задайте значение переменной в одной функции и используйте в других функциях при вызове непосредственно из ссылки в codeigniter JQuery добавляется к сбою Есть ли более простой способ проверить, равна ли переменная множеству чисел? Скрыть заголовки подкатегорий на странице с одной родительской подкатегорией WooCommerce Запрос порядка запросов MySQL по значению в столбце JSON PHP SDK – выход в Facebook Что означает «===»?

cookie против сеансов для приложения php

что было бы лучше при внедрении сеансов системной логики php или файлов cookie?

Файлы cookie браузера:

  • разделяемые между клиентом (браузером) и сервером (PHP)
    • среди прочего, это означает, что « пользователь может напрямую читать / записывать данные, и вы не можете контролировать или ограничивать это »,
  • ограниченный по размеру (4K)
  • отправлено в полном объеме на каждый запрос страницы

PHP-сессии:

  • хранится только на сервере
  • может быть намного больше, чем файлы cookie
  • доступ через небольшой файл cookie или параметр запроса

PHPSESSID PHP в фоновом режиме создают куки-файл (по умолчанию называется PHPSESSID , настраивается с помощью session_name () ), поэтому вы используете файлы cookie в любом случае. Сеансы могут быть настроены так, чтобы не использовать куки-файлы, однако это довольно сложное обходное решение с тех пор, когда поддержка файлов cookie была на самом деле проблемой. Что он делает: перезаписывает все URL-адреса, которые он может найти в выводе, добавляя к ним ?PHPSESSID=your_session_id . Проблемы: он пропустил некоторые URL-адреса, и URL-адрес выглядит уродливым (IMHO). Я не видел PHP-сессию без cookie в течение длительного времени (с 2002 года или около того).

PHP-сессии не совпадают с файлами cookie, однако в конфигурации по умолчанию они используют куки-файл для хранения указателя «указатель» / «указателя» к вашим данным сеанса. Данные сеанса хранятся на сервере PHP, когда у вас есть существующий идентификатор сеанса, скрипт получает доступ к соответствующим данным; тогда как с помощью чистого куки-файла вам нужно будет сохранить данные в самом файле cookie. Файлы cookie ограничены по размеру и отправляются на каждый запрос страницы, поэтому имеет смысл отправлять только куки-файлы в несколько байтов и хранить данные на сервере.

Пример:

 $_COOKIE: { 'PHPSESSID' => 'a123456ebdf123' } $_SESSION: { 'user_name' => 'Piskvor', 8 => 'sadfsadfsdf', 'huge block of text' => '(a huge block of text could be here, as PHP sessions can usually be bigger than the measly 4K allowed for a cookie)' } /tmp/php_sessions/sess_a123456ebdf123 (a file on server, note the name): (whatever you see in $_SESSION above, passed through serialize()) 

Это также означает, что вы никогда не должны хранить данные cookie, которые вы не хотите видеть или изменять, например, если ваш код задает cookie, logged-in-user: Piskvor или даже is-admin: 1 , есть вы не можете помешать пользователю делать то же самое со встроенными инструментами браузера. Хранение этого в переменной сеанса более безопасно, поскольку данные непосредственно не отображаются пользователю, за исключением случаев, когда ваш код позволяет – все, что видит пользователь, – это идентификатор сеанса (идентификаторы сеанса не идеальны, либо см. «Захват сеанса») – но они более безопасны, чем файлы cookie).

Редактирование толпы TL; DR: при использовании сеансов они обычно поддерживаются куки-файлами, но они не одно и то же. Я бы рекомендовал использовать сеансы (по причинам, изложенным выше, знать, что это обычно означает «через файлы cookie»).

Файлы cookie хранятся в браузере пользователя. Сеансы хранятся на стороне сервера.

Если у вас есть ЛЮБАЯ конфиденциальная информация, никогда не помещайте их в файл cookie, так как пользователь или кто-то с доступом к их компьютеру может делать с ними всевозможные неприятные вещи.

Если вы принимаете какие-либо решения – например, решить, кто-то вошел в систему или имеет доступ администратора, вы можете использовать файл cookie, а затем сопоставить его с сеансом с интересными / важными битами.

Хотя вы можете установить срок действия файлов cookie, поскольку они хранятся в браузере, которые всегда могут быть настроены гнусным пользователем. Я уже скорректировал свои собственные файлы cookie, чтобы никогда больше не приходилось регистрироваться. 😉 Поскольку сеансы являются серверными – и не нужно делиться с пользователем – вы можете быть уверены, что сеанс истекает, когда вы хотите.

Хотя вам нужно знать о фиксации сеанса или повторных атаках … так что они тоже не идеальны.

Сохранить в файлах cookie:

  1. $ user_id
  2. $ Хеш = хэш ( 'sha512', $ соли. $ Ф. $ User_id)

И при проверке подлинности, если хэш user_id равен хешу, хранящемуся в файлах cookie. Таким образом, вам не нужно хранить что-либо на стороне сервера.

лучше? ни.

HTTP – это протокол без учета состояния (без сеанса) для создания какого-либо сеанса, в котором вы можете использовать cookie (хранить значения на стороне клиента в cookie и передавать их с каждым запросом) или передавать значения в качестве параметров URL (например, sessionID = 2358734578}.

Сессии PHP просто назначают каждому клиенту sessionid и хранят его в cookie, это действует как идентификатор для клиента (вы также можете настроить его для использования параметров URL тоже).

Таким образом, в основном вы можете использовать встроенную реализацию PHP-сессии, которая хранит все на стороне сервера, дает клиенту идентификатор для передачи cookie, а затем предоставляет вам способ получить данные для этого сеанса на основе указанного идентификатора (который передается через cookie) – или вы можете придумать свою собственную систему (которую вы назвали «использованием файлов cookie»), но в конечном итоге это не может быть лучше », хотя в качестве би-продукта вы можете понять, как работает HTTP, что мало немного более 🙂

см. также ответ на вопрос CaseySoftware в отношении соображений безопасности.