69694

Принцип роботи механізму Cookies

Лекция

Информатика, кибернетика и программирование

Чому небезпечно зберігати пароль в Cookies Отримавши від сервера Cookie-змінну браузер зберігає її на диску у відкритому вигляді тобто не кодуючи її. Крім того в деяких браузерах Cookies взагалі зберігаються в звичайному текстовому файлі а деякі навіть дозволяють проглянути їх.

Украинкский

2014-10-08

141.5 KB

0 чел.

Тема 14: Принцип роботи механізму Cookies

Мені не хочеться забивати вам голову технічними подробицями, тому я стисло скажу, що таке Cookies і, немає, не з чим їх їдять, а як з ними потрібно працювати.

Уявимо, що перед нами поставлено таке завдання: потрібно написати індивідуальний лічильник відвідин для кожного клієнта сайту нашій

компанії. Тобто, щоб користувач знав, скільки разів саме він був на нашому сайті, а не бачив загальну кількість відвідин.

Можна вирішити дане завдання двома способами. Перший спосіб полягає в тому, щоб вести облік по IP-адресі. Для цього потрібна база даних, що складається всього з однієї таблиці, структура якої приблизно така:

IP-адреса Відвідини

111.111.111.111 23

111.123.215.211 100

Коли користувач заходить на наш сайт, нам потрібно визначити його IP, знайти в базі даних інформацію про його відвідини, збільшити лічильник на одиницю і вивести його в браузер. Визначати IP-адресу клієнта ми вже зуміємо (змінна $REMOTE_ADDR), тому нам нескладно написати таку програму. Проте при використанні даного способу рано чи пізно «спливуть» дві проблеми:

Для кожної IP-адреси потрібно буде вести облік в одній таблиці,
яка, швидше за все, буде великий, а з цього виходить, що ми
нераціонально використовуємо процесорний час і дисковий простір. Набагато правильніше з нашого боку використовуватиме
цей простір з більшою користю.

У більшості домашніх користувачів IP-адреси динамічні. Тобто, сьогодні у нього адреса 111.111.111.111, завтра — 111.111.111.118. І
спробуй потім визначити, хто є хто. Можна ввести реєстрацію
з використанням імені користувача і пароля, але це ще більше
збільшить нашу базу даних і створить незручності для клієнтів.

Ясна річ, що даний спосіб нам не допоможе. Залишається використовувати другий спосіб, який набагато легше в реалізації. Ми встановлюємо Cookie — змінну, яка зберігатиметься на диску у користувача. Ця змінна і зберігатиме інформацію про відвідини. Вона прочитуватиметься сценарієм при зверненні користувача до сервера. Вигода очевидна. По-перше, нам не потрібно зберігати непотрібну інформацію про IP-адреси, по-друге, нам не страшні динамічні IP-адреси, оскільки дані про свої відвідини зберігаються у клієнта.

Тепер нам ясно, для чого використовуються Cookies — для зберігання невеликої за об'ємом інформації у клієнта, наприклад, його логіна (але у жодному випадку не пароля!), настройок сайту (колірна гамма, мова, і т.д.) і іншої інформації.

Чому небезпечно зберігати пароль в Cookies? Отримавши від сервера Cookie-змінну, браузер зберігає її на диску у відкритому вигляді, тобто, не кодуючи її. Будь-який, кому не лінь, може проглянути значення цієї змінної. Крім того в деяких браузерах Cookies взагалі зберігаються в

звичайному текстовому файлі, а деякі — навіть дозволяють проглянути їх. Наприклад, в браузере Mozilla для проглядання Cookies виконаєте команду меню Edit -» Preferences-) Privacy -> Security ~> Cookies (див. мал. 6.9).

Мал. 6.9. Управління параметрами Cookies

У цьому розділі ви можете включити (Enable) або відключити (Disable) прийом Cookies, встановити максимальний термін зберігання Cookie (Limit maximum lifetime):

Current session (Поточна сесія) — змінна буде видалена після закінчення сесії роботи з сайтом (наприклад, коли користувач
закриє вікно сайту).

Встановити певну кількість днів, після закінчення яких все прийняті Cookies будуть видалені.

Дуже не рекомендую встановлювати режим запит на прийом Cookies (Ask me before storing а cookie) — багато сайтів встановлюють Cookies, і цей режим дуже скоро вам набридне.

Натисніть кнопку Manage Stored Cookies. З'явиться вікно з інформацією про всіх встановлених Cookies (див. мал. 6.10).

Клацніть на імені встановленої Cookie-змінної, щоб отримати інформацію про неї:

| Name — ім'я змінної;

Information — інформація,
яку містить Cookie;

Host — вузол, що встановив
змінну;

Secure  Server  —  ознака
того,  що  Cookie повинна
передаватися через захищене (HTTPS) з'єднання; i

Expires   —  час  життя Cookie.  Значення at end of session  означає,   що Cookie    «житиме» до кінця сесії.

Кнопка Remove Cookie видаляє поточну змінну, а кнопка Remove All Cookies видаляє всі Cookie-змінні.

Мал. 6.10. Встановлені Cookies

Ви часто купуєте товари в Інтернет-магазинах? Тоді рекомендую час від часу (скажімо, раз на місяць) видаляти

все Cookies. Навіщо? Ви побачите, що ціни стануть нижчі. Річ у тому, що деякі Інтернет-магазини (особливо, «буржуйські») грішать на довірі клієнтів. Пару разів вони можуть продати вам товар за заниженими цінами, потім ви, знаючи, що це найдешевший в Інтернеті магазин, купуватимете товари тільки у них. А вони якраз і скористаються Cookies — свідомо завищуватимуть ціни на всі товари, коли ви в черговий раз робитимете покупку, запевняючи себе, що економите гроші. При цьому за допомогою Cookies Інтернет-магазини визначатимуть, хто ви такий і що ви раніше купували.

Проте не потрібно зовсім відключати Cookies. Деякі сайти стануть завантажуватися некоректно. Якщо ви боїтеся, що через Cookies можна отримати вірус, то не турбуйтеся: навіть якщо хтось передасть вам за допомогою Cookies «шкідливий код», то система не зможе його запустити, оскільки Cookies зберігаються в текстовому вигляді (а в Linux для Cookies не встановлюється право за запуск файлу).

Перед тим, як почати роботу з Cookies, дозволю собі пару зауважень щодо вибору браузера. Для відладки ваших сценаріїв, якщо вони використовують Cookies, я рекомендую використовувати браузер Mozilla, оскільки він дозволяє ефективно управляти Cookies. Якщо цей браузер вас чомусь не влаштовує, використовуйте Konqueror

який також дозволяє проглянути докладну інформацію про отримані Cookies (мал. 6.11). Браузеры Internet Explorer версій 4 і 5 не дозволяють цього зробити.

Мал. 6.11. Вікно настройки браузера Konqueror

6.3.2. Програмування Cookies

Установка Cookies

Ось тепер можна приступити до програмування Cookies. Для установки Cookies використовується функція SetCookie. У загальному випадку для цієї функції можна вказати цілих шість параметрів, але обов'язковий з них є тільки один — name:

name — задає ім'я (рядок), закріплене за Cookie.

value — визначає значення змінної (рядок).

expire — час життя змінної (ціле число). Якщо цей параметр не вказаний, Cookie «житиме» до кінця сесії, тобто до

закриття браузера. Якщо час вказаний, то, коли воно наступить, Cookie самознищуватиметься.

path — шлях до Cookie (рядок).

domain — домен (рядок). Як значення встановлюється ім'я
хоста з якого встановили.

secure — передача через HTTPS-з'єднання.

Зазвичай використовуються тільки три перші параметри. У лістингу 6.4 приведено декілька прикладів установки Cookies.

Лістинг 6.4. Приклади установки Cookies

//   До кінця   сесії SetCookie("Test","Value");

//   Час   життя   -   одну   годину   після   установки SetCookie("My_cookie","One   hour",time O+3 600);

При використанні Cookies потрібно мати на увазі, що Cookies повинні бути встановленими до першого виведення сценарію (будь то оператор echo або виведення якої-небудь функції). Тому бажано встановлювати Cookies на самому початку сценарію. Річ у тому, що Cookies встановлюються за допомогою певного заголовка сервера, а якщо ви виводите що-небудь, то це означає, що починається тіло документа. В результаті Cookies не будуть встановлені. Ось що ви отримаєте, якщо установка Cookies неможлива:

Warning:   Cannot   add  header   information   -   headers   already   sent by    (output   started   at   /var/www/html/cookie.php: 2)    in   /var/www/ html/cookie.php   on   line   4

Читання значень Cookies

Дістати доступ до Cookies досить просто. Всі вони зберігаються в змінній оточення НТТР_СООК1Е. Якщо ми встановили декілька Cookies, то в змінною HTTPCOOKIE вони будуть перераховані через «;» (через крапку з комою). Наприклад: mycookiel=valuel;mycookie2=value2.

Для читання значення Cookies можна звертатися до них, як до звичайних змінних. Наприклад: echo $Test; Тільки не забудьте перевірити існування змінної. На закінчення приведу приклад «індивідуального лічильника» відвідин. Код сценарію приведений в лістингу 6.5.

Лістинг 6.5. Індивідуальний лічильник за допомогою Cookies

<?

//   Якщо   змінна   не   існує,   объвляем   її if   (! isset ($Ind_Counter))    $Ind_Counter   =   0;

//   Збільшуємо   лічильник $Ind_Counter++;

/*   Встановлюємо   Cookie   яка      житиме   до   переустановки користувачем   Windows,   тобто   дуже   довго.   Якщо   вам   цікаво, то   браузер видалить   її   18/07/29   08:49   *'/

SetCookie("Ind_Counter",$Ind_Counter,0x6FFFFFFF); echo   "Ви   відвідали   цей   сайт   $Ind_Counter   раз" ?>

Вище я говорив, що перед установкою Cookies не можна використовувати оператора echo. Тільки що я сам допустив подібну помилку. Якщо оператора echo у вашій програмі немає (принаймні до виклику SetCookie()), а Cookies неможливо встановити, переконаєтеся в тому, що символи маркера почала програми — <? — є першими у файлі. У мене тільки що була така ситуація:

початок   файлу

\ п

<?

Природно, що символ \ п я не побачив, а РНР «подумав», що це фрагмент HTML-документа. В результаті Cookies не були встановлені, оскільки Cookies встановлюються при формуванні заголовка документа, а після першого виведення сценарію формування заголовка припиняється.

На цьому даний розділ закінчується, але до Cookies ми ще не раз повертатимемося.


 

А также другие работы, которые могут Вас заинтересовать

37610. Изучение частотных характеристик мультивибратора Ройера в зависимости от величины нагрузки 310.5 KB
  Установив входное напряжение 30 В, путем изменения нагрузки, изменяем ток нагрузки до минимального возможного значения, фиксируя каждый раз значения токов Iвх , Iн, напряжения на нагрузке и частоты. Рассчитываем значения потребляемой мощности, выходной мощности и КПД
37611. Описание и моделирование регулярных (систолических) схем 289.5 KB
  Необходимо спроектировать VHDL-модель заданного устройства одним из указанных способов согласно требованиям, сформулированным к каждому варианту задания, разработать тестирующие воздействия и выполнить моделирование работы устройства.
37612. Проведение экспериментальных работ при исследовании переходных процессов в электрических цепях 115 KB
  На экране осциллографа получаем изображение зависимости напряжения и тока конденсатора от времени.Зарисовываем осциллограммы тока и напряжения на конденсаторе: Рассчитываем по осциллограмме постоянные времени разряда и заряда конденсатора по кривой uсt. На экране осциллографа получаем изображения зависимости тока и напряжения катушки от времени. Зарисовываем осциллограммы тока и напряжения катушки: Рассчитываем по осциллограмме постоянные времени при подключении и отключении катушки по кривой it.
37613. История государства и права зарубежных стран (ИГПЗС) 712 KB
  В силу конкретноисторического подхода к государственноправовым явлениям и процессам присущим тому или иному обществу на том или ином этапе его развития оперируя множеством фактов и событий политической жизни деятельности государств правительств классов и партий ИГПЗС ставит своей целью выявление исторических закономерностей развития государства и права. ИГПЗС тесно связана с другой юридической наукой и учебной дисциплиной – Теорией государства и права также изучающей закономерности развития государства и права. Теория...
37614. Основи теорії транспортних процесів і систем 4.22 MB
  У цьому розділі вивчаються питання стосовно експлуатаційних властивостей транспортних засобів що використовуються для організації процесу перевезення вантажів та пасажирів. В країнах Азії до цих пір переміщення вантажів та людей за допомогою коромисел є дуже розповсюдженим. В умовах первинно общинного ладу для транспортування людей та вантажів використовувались найпростіші засоби включаючи в'ючних тварин. На сьогодні транспорт це одна із найважливіших галузей матеріального виробництва що виконує перевезення людей та вантажів.
37615. Программирование на языке ассемблера для микропроцессоров фирмы Intel 411.5 KB
  Программист или любой другой пользователь может использовать любые высокоуровневые средства вплоть до программ построения виртуальных миров и возможно даже не подозревать что на самом деле компьютер выполняет не команды языка на котором написана его программа а их трансформированное представление в форме скучной и унылой последовательности команд совсем другого языка машинного. шесть регистров сегментов: cs ds ss es fs gs; регистры состояния и управления: регистр флагов eflags flags; регистр указателя команды eip ip. Его...
37616. Тезисы лекций по маркетингу 534.5 KB
  В этой ипостаси маркетинг существует несколько тысяч лет когда произошло отделение купца негоцианта от производителя товара – ремесленника. Производственная: Разработка ассортимента новых продуктов; Разработка требований к новым товарам Сбытовая: Выбор каналов сбыта. Сравнительный анализ сбытовой и современной концепций маркетинга Сбытовая Современный маркетинг Учет потребностей Предприятия Потребителей Производится то что Удается произвести Что будет куплено Ассортимент Узкий Широкий Горизонт планирования Краткосрочный Длительный...
37617. Бег с барьерами 15.99 KB
  Дисциплины: Зимний сезон : 50 метров 60 метров Летний сезон : 100 метров женщины 110 метров мужчины 400 метров История Первые упоминания об официальных стартах в барьерном беге относятся к соревнованиям в Англии в 1837 году в колледже Итон. Олимпийский дебют на дистанции 110 метров с барьерами состоялся в 1896 году.
37618. Горный бег 18.2 KB
  Классификация трасс по критерию набор высоты Категория А: набор высоты составляет как минимум 76 метров 250 футов на каждую милю 16 км дистанции; по шоссе проходит не более 20 от общей длины трассы; трасса должна быть длиной не менее одной мили 16 Категория В: набор высоты составляет как минимум 38 метров 125 футов на каждую милю 16 км дистанции; по шоссе проходит не более 30 от общей длины трассы; Категория С: набор высоты составляет как минимум 304 метра 100 футов на каждую милю 16 км дистанции; по шоссе проходит не...