Автор оригинала: David Wong.
Что такое сессия и файлы cookie ?
Сеанс и файлы cookie-это технологии управления сеансами. Они часто используются для распознавания личности, проверки входа в систему, передачи данных и т.д. например, когда мы идем в супермаркет, чтобы что-то купить, нам нужно вынуть нашу членскую карточку, чтобы получить скидку. В настоящее время, как мы можем идентифицировать реальную и эффективную членскую карточку? Когда мы передадим номер участника кассиру, кассир предоставит его в соответствии с нашим номером участника, введенным в систему. Система выполнит запрос в соответствии с номером участника. Если он будет найден, это докажет, что номер участника является реальным. Номер участника здесь похож на файл cookie и сеанс. Система членства похожа на сервер, а кассир-на клиента
Почему сессия и файлы cookie?
Согласно приведенному выше примеру, мы знаем, что могут делать сеанс и файлы cookie, так почему мы должны это использовать? Здесь необходимо разобраться в характеристиках транспортного протокола приложения HTTP. Поскольку протокол HTTP не имеет состояния, то есть браузер запрашивает веб-страницу, которая является HTTP-запросом. Когда сервер получает запрос, он возвращает данные, требуемые клиентом. В этом процессе браузер устанавливает соединение с сервером. Но когда сервер возвращает данные, а клиент получает данные, их соединение разрывается. В следующий раз, когда браузер отправит запрос, он должен восстановить соединение. Эти две ссылки не имеют ничего общего друг с другом. Только представьте, когда мы входим в систему торгового центра, мы входим на главную страницу, но когда мы размещаем заказ или присоединяемся к корзине покупок, нам все равно нужно войти. Когда мы посещаем страницу, нам нужно войти в систему, что не очень утомительно, но и очень ненаучно. В случае, если мы присоединяемся к корзине покупок, мы нажимаем, чтобы разместить заказ, на странице заказа необходимо войти в систему, и неправильно оставлять отзывы о товарах вы заказали
Характеристики Http
1. Протокол HTTP поддерживает режим клиент/сервер, а также является протоколом режима запроса/ответа. 2. Никакой связи. Так называемое “отсутствие соединения” означает, что после того, как сервер получит запрос клиента, ответ будет завершен и получен ответ клиента, соединение будет отключено. Ограничьте каждое соединение одним запросом за раз. Это экономит время передачи. 3. Никакого статуса. Протокол HTTP не имеет возможности использовать память для обработки транзакций. Это означает, что, если требуется предварительная информация, она может быть передана только повторно, что практически увеличивает объем передачи данных. Таким образом, сервер каким-то образом объясняется, но это не способствует соединению между клиентом и сервером. Чтобы компенсировать это, были разработаны две технологии записи статуса HTTP, одна из которых называется cookie, а другая-сессия. Мы поговорим о них позже. 4. Просто и быстро: так называемый простой и быстрый означает, что, когда клиент запрашивает услугу с сервера, ему обычно требуется только передать метод запроса и путь для доступа к нему 5. Гибкость: в основном это относится к тому, что клиент может передавать данные любого типа по протоколу HTTP. Например, для перевода. Файлы JPG,. Файлы Ppt и так далее, вам нужно только установить тип контента для передачи.
Печенье
Основная концепция файлов cookie
Файлы cookie-это механизм, позволяющий удаленным браузерам хранить данные для отслеживания и идентификации пользователей. С точки зрения реализации, файл cookie-это часть данных, хранящихся на клиенте.
Принцип работы и механизм хранения файлов cookie
. принцип действия 1. Клиент отправляет HTTP-запрос на сервер 2. Сервер устанавливает инструкцию по созданию файлов cookie для ответа клиенту 3. Клиент получает инструкцию ответа от сервера и создает файл cookie в клиенте в соответствии с инструкцией 4. При блокировании следующего запроса клиент переносит файл cookie для отправки запроса на сервер . механизм хранения Вообще говоря, существует три способа хранения файлов cookie на стороне клиента. Разные браузеры имеют разные механизмы хранения и разные сохраненные файлы cookie 1. Хранилище файлов. Для разных доменов браузер создаст отдельный файл в соответствующем каталоге диска для хранения значения cookie в домене 2. Хранилище памяти. Когда браузер закрыт, файл cookie исчезает. Согласно следующему синтаксису создания, это происходит, когда мы не устанавливаем время истечения 3. Флэш-память. Этот метод хранения постоянно хранится на диске. Даже если некоторые данные будут удалены через браузер, файл cookie, сохраненный этим методом, не может быть удален. Если его необходимо удалить, его можно удалить с помощью диска
Настройки файлов cookie
Bool setcookie(string $name[, string $values, $expire=0[,string $path[,string $domain[, bool $secure = false[, bool $httpOnly = false]]]]] ); $Name: name of cookie store, required option $values: the value stored by the cookie. Note here that when the value is set to false, the client will try to delete the cookie value. Therefore, when we want to set the value to true or false, we use another value instead. For example, true is replaced by 1, false is replaced by 0 $expire: the expiration time of the cookie, in seconds. When the value is set, it will be deleted regularly. When the value is not set, it is permanently valid. When the value is set to less than the current time, the deletion mechanism of the browser will start and the cookie will be deleted automatically $path: the directory where the cookie is valid. The default directory is "/", which means that all current domain names are valid $domain: the domain name of the cookie. By default, the current domain name is valid. If you need to set a valid domain name, you can fill in it directly. Note that the IE browser has a length limit, which will only take effect when it is greater than 5 $secure: when the encryption of cookies is set to true, HTTPS protocol is required to take effect $httponly: determines whether cookies only use the HTTP protocol. When set to 1 or true, other non HTTP protocols cannot operate cookies. For example, when we don't set the cookie, our JavaScript can set the cookie. This ensures the security to some extent. In this case, we need to consider whether the browser supports the configuration item
. функция, которая устанавливает файл cookie, также имеет функцию setrawcookie (), за исключением того, что в ее значении нет порядкового номера URL-кода . < шрифт > иногда мы можем столкнуться с такой ситуацией. Мы установили файл cookie на этой странице, но для обновления страницы для получения файла cookie разумно получить файл cookie, но в реальной ситуации невозможно получить файл cookie, что вызвано механизмом запуска файлов cookie. PHP создает инструкцию для файлов cookie и сообщает браузеру, что вам необходимо выполнить эту инструкцию. В настоящее время просмотр файлов cookie не может быть получен, потому что эта инструкция выполняется . нет вывода, пока не будет установлен файл cookie
//Implementation mode I
setcookie($cookie,"hello,world!", 3600);
//Implementation mode II
Header ("header (" set Cookie: testcookie = Chinese; path = /; domain =. Sunhp. Org; expires = ". Gmstrftime ("% a,% d -% B -% Y% H:% m:% s GMT ", time() + 9600));");
//The two functions are the same. Setcookie is a PHP built-in function and an operation encapsulation of HTTP protocol.Получение файлов cookie
$_COOKIE['$cookeName'];
Применение файлов cookie
. идентификация пользователя . передача данных . контроль входа в систему (вход или нет, единый вход)
Настройки кросс-домена файлов cookie
Мы все знаем, что при интерфейсной разработке мы часто сталкиваемся с междоменными проблемами Ajax. Есть много способов, которыми мы можем их решить. Вы можете обратиться к этой статье: портал 1, Портал 2, кросс-домен файлов cookie. Мы можем сослаться на Портал транспортных протоколов P3P
Меры предосторожности при использовании файлов cookie
. ограничение по количеству. У клиента есть ограничение на количество файлов cookie в каждом домене, а не только на создание любого количества . безопасность. В соответствии с приведенным выше синтаксисом создания мы можем знать, что, когда мы не устанавливаем значение $httponly, значение файла cookie может использоваться не по протоколу HTTP, например, JavaScript может использовать файл cookie (имя файла cookie$). Более того, некоторые инструменты захвата пакетов также могут захватывать файлы cookie. Кроме того, файл cookie хранится в файле клиента. Если мы получим файл cookie, мы также сможем извлечь его Чтобы предотвратить копирование файла cookie другими пользователями и вредоносную операцию, файл cookie может быть зашифрован для передачи данных: когда количество файлов cookie велико и объем данных велик, фактически используется пропускная способность. По сравнению с передачей по протоколу HTTP требуется пропускная способность. Когда объем данных, передаваемых по протоколу HTTP, велик, потребление полосы пропускания велико
Сессия
Принцип работы и механизм хранения
. принцип действия 1. Клиент отправляет запрос на сервер для установления связи 2. Сервер создает файл с номером идентификатора сеанса в соответствии с заданной инструкцией по созданию сеанса. Значение в файле-это конкретное значение сеанса (имя | тип переменной компонента: длина: значение) 3. Сервер отвечает клиенту на созданный номер идентификатора сеанса, и клиент сохраняет этот номер в файле cookie (как правило, мы обнаружим, что в файле cookie в панели отладки, хранящейся в браузере, есть ключ php sessid, который является идентификатором сеанса. Конечно, это имя можно изменить, установив сервер) . в следующем запросе клиент переносит идентификатор сеанса в запрос и отправляет его на сервер. Сервер делает некоторые бизнес-суждения на основе идентификатора сеанса
. механизм хранения 1. Режим хранения. Сеанс по умолчанию является хранилищем файлов. Мы можем настроить портал драйверов хранилища с помощью конфигурации php.ini 2. Жизненный цикл. Когда мы не устанавливаем жизненный цикл сеанса, идентификатор phpsessid, хранящийся в клиенте, автоматически исчезает при закрытии браузера, потому что есть память, и идентификатор phpsessid будет воссоздан при следующем установлении соединения. Предыдущая сессия будет автоматически удалена PHP в соответствии с механизмом сбора мусора. Здесь мы можем установить параметры cookie ($expire) в соответствии с номером сеанса, чтобы установить жизненный цикл;
Настройки сеанса
session_start(); $_SESSION = $values;
. функция session_start() не может иметь никаких выходных данных, пока она не будет установлена
Начало сеанса
$_SESSION['values'];
Сценарии использования сеанса
. идентификация пользователя . передача данных . контроль входа в систему (вход или нет, единый вход)
Заметки о сессии
. безопасность, идентификатор сеанса генерируется в соответствии с определенным алгоритмом, и уникальность и случайность значения сеанса должны быть гарантированы . клиент отключает файлы cookie. В соответствии с вышеуказанным принципом работы сеанса можно сделать вывод, что хранение сеанса зависит от передачи или зависит от клиента. Поэтому, когда клиент отключает файлы cookie, клиент не может сохранить идентификатор phpsessid. В это время передача сеанса может быть реализована путем перезаписи URL-адреса или формы . сохранить оптимизацию: создайте в соответствии с описанным выше сеансом. Все сеансы будут созданы в каталоге. В то же время некоторые недействительные сеансы не будут удалены во время работы механизма сбора мусора. Когда сервер настроен на большее количество сайтов, будет создано много файлов сеансов, что замедлит нашу скорость чтения. Мы можем установить уровень каталога сохранения сеанса, сохранить путь Общие крупные проекты (например, распределенные проекты) могут использовать другие методы хранения, такие как хранение данных, запоминающее устройство
Разница между сеансом и файлами cookie
. сеанс хранится на сервере, а файл cookie хранится в клиенте . инструкции по созданию файлов cookie устанавливаются сервером . идентификатор сеанса сеанса должен быть сохранен клиентом
Некоторые недопонимания файлов cookie и сеанса
. файлы cookie запрещены клиентом. Сеанс не может быть использован?
It can be implemented by URL rewriting or form submission
. по сравнению с безопасностью сеанса и файлов cookie, обеспечивает ли сеанс более высокую безопасность клиента?
Since the cookie exists in the client, the security is relatively low, but the value of $httponly can be set when it is created Because cookie and session are interrelated, session can be obtained to a certain extent by acquiring cookie, and session can also be operated
. исчезают ли файлы cookie и сеансы при закрытии браузера?
This requires looking at the storage mechanism. Cookies can be stored in files, memory and flash. Of course, when the browser is closed, the memory will disappear. Because of the garbage collection mechanism, session will not be deleted in the garbage collection mechanism unless the deletion is performed as shown in your code
. файлы cookie хранятся в клиенте. Как я могу повысить их безопасность?
When setting cookies, we can add some special parameters, such as client information IP, browser information, etc
. когда файл cookie хранится в файле клиента, может ли каждый браузер получить файл для работы?
It depends on whether the management mechanism of cookies is the same between browsers
Передача оригинального текста
Оригинал: “https://developpaper.com/cookie-and-session-details/”