Главная
К библиотеке


Использование свойств Cookie.

Вы, наверное, уже слышали такое понятие - Cookie и о проблемах безопасности с ними связанных? Вкратце расскажу для чего это надо и в чем, действительно, состоит проблема использования cookie в интернете

Cookie - информация, которую можно записать на клиентской машине со страницы в интернете. Информация эта хранится в строго отведенном месте (например у меня в папке win98/cookies). Что обычно там записывается? Параметры сессии пользователя. Возможно хранение там расположения окон, выбранное пользователем. Ваше имя, чтобы, если вы зоходите на эту страничку, погреть ваше самолюбие, обратившись к вам не безликим: "Dear guest,...", а например так: "Уважаемый Федор Епистафьевич!". Чтобы не задавать каждый раз вопрос о вашем имени скрипт на странице запишет ваше имя в отдельный файл на локальном компьютере и при следующем обращении, на запрос этой информации клиент выдаст ее для скрипта.

Почему же столько споров в интернете идет о нарушении безопасности при использовании cookies? Тут необходимо выделить пару вопросов. Процесс записи и чтения cookies происходит незаметно для пользователя и он, чаще всего, не знает, кто и что записал на его диск. С другой стороны посредством cookies можно накопить информацию о вас: на какие странички вы чаще всего ходите, что вас больше всего интересует и пр. Многие считают это нарушением прав личности.

Прямой угрозы безопасности свойства cookie не несут. А если вас сильно беспокоит, что кто-то может вычислить, что из всех страниц одного из сайтов вы предпочитаете те, которые имеют своеобразную направленность, то имейте в виду, что cookie одного домена не могут быть ни прочитаны, ни записаны из другого. Т.е. если страница www.somewhere.com запишет какую-то информацию, то страница www.other.com не сможет ее получить. В крайнем случае поддержку cookie можно выключить.

Объясню на примере этого сайта какие удобства могут быть получены при применении cookie. Если вы не заходили на сайт некоторое время, то определить, что изменилось с того времени довольно сложно. Если я смогу получить от вас номер последнего "опыта", который вы смотрели, то я получаю возможность отметить те опыты, которые обновились.

Рассмотрим как это работает. Свойство документа document.cookie содержит список пар "имя=значение". Например, это может выглядеть так: "LastVisited=13-04-99; LastViewed=12; Name=Andrew". Функция document.cookie.split(разделитель) возвращает массив пар "имя=значение", который содержит все cookie. Полученные пары можно, так же, разбить на отдельные переменные или построить массив, которые по имени cookie будет выдавать его значение.

Кроме того, необходимо заметить, что cookie имеет "срок годности", т.е. время, после, которого значение устаревает и стирается клиентской программой.

Как записать cookie? Для этого надо составить строку такого типа:
"param1=" + param1 + "; expires=" + expireDate.toGMTString() + ";"
expireDate - переменная типа date, но в cookie она записывается в стандарте GMT, в который ее можно преобразовать методом toGMTString(). Далее эту строку необходимо присвоить переменной document.cookie, после чего cookie будут сохранены на клиентской машине.

Для получения массива значений используйте следующую функцию:

function parseCookie () {
  var cookieList = document.cookie.split("; ");
  var cookieArray = new Array();
  for (var i = 0; i < cookieList.length; i++) {
      var name = cookieList[i].split("=");
	  cookieArray[unescape(name[0])] = unescape(name[1]);
  }
  return cookieArray;
}

Для установки номера последнего просмотренного опыта я использовал следующий код:

function setLast( lastNum ) {
  var expireDate = new Date();
  var today = new Date();
  expireDate.setDate(365 + expireDate.getDate());
  document.cookie = "last=" + lastNum + "; expires=" +
  expireDate.toGMTString() + ";";
}

И последнее замечание. Основная проблема при использовании Cookie, это то, что их количество на клиентской машине ограничено и нет гарантии, что к следующему визиту ваша информация будет сохранена.

Материал с сайта http://exper.ural.ru
Hosted by uCoz