Установка срока годности cookies 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Установка срока годности cookies



По умолчанию cookies устанавливаются на один сеанс работы с броузером, однако можно задать для них более продолжительный срок существования. Это очень удобное и полезное свойство, поскольку в этом случае пользователю не нужно предоставлять свои данные вновь при каждом посещении сайта.

Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В PHP существуют функцииtime и mktime для работы с датой и временем, позволяющие переводить текущее время в количество секунд с начала эпохи. Функция time просто переводит текущее системное время в количество секунд, прошедших с начала эпохи:

Time

Синтаксис:

time ();

Усовершенствованным вариантом функции time является функция mktime:

Mktime

Синтаксис:

int mktime ( [ int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )

Аргумент is_dst этой функции определяет, попадает ли эта дата в период летнего времени и может принимать следующие значения:

· -1 (По умолчанию. Означает, что свойство не задано);

· 0 (Временной интервал не приходится на период летнего времени);

· 1 (Временной интервал приходится на период летнего времени).

Примеры установки сроки годности cookies:

<? /* этот cookie действителен в течение 10 мин после создания */ setcookie ( "name", $value, time () + 600 ); /* действие этого cookie прекращается в полночь 25 января 2010 года */ setcookie ( "name", $value, mktime ( 0,0,0,01,25,2010 )); /* действие этого cookie прекращается в 18.00 25 января 2010 года */ setcookie ( "name", $value, mktime ( 18,0,0,01,25,2010 ));?>

Удаление cookie

Удалить cookie просто. Для этого надо вызвать функцию setcookie и передать ей имя того cookie, который подлежит удалению:

setcookie ( "name" );

Другие установленные cookie при этом не удаляются.

Проблемы безопасности, связанные с cookies

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

· установка области видимости cookies;

· шифрование;

· ограничение доступа для доменов;

· отправка cookies по защищенному запросу.

Наилучшим решением является комплексное применение всех этих способов.

Установка области видимости cookie

Поскольку, по умолчанию, доступ к cookie происходит из корневого каталога, это может создать "дыры" в системе защиты, так как cookies становятся доступными в любом подкаталоге этого каталога. Ограничить доступ к cookies для всех страниц, кроме расположенных в конкретном каталоге, к примеру, /web, можно следующим образом:

setcookie ( "name", $value, "/web/" );

Однако и в этом случае, к примеру, каталоги /web/index.php, /web1/page.html и т. д. будут удовлетворять этому ограничению. Если такое положение также является нежелательным, можно ограничить область видимости cookies до конкретной страницы:

setcookie ( "name", $value, "/web/index.php" );

Однако и такой способ в полной мере не решает проблему, так как в этом случае доступ к информации, содержащейся в cookie, может получить, к примеру, скрипт /web/index.php-script/anti_cookie.php. Поэтому появляется необходимость в шифровании.

Шифрование

Применить шифрование к cookies можно разными способами, рассмотрим один из них:

<? // создаем вектор начального состояния для шифрования $vector = mcrypt_create_iv ( mcrypt_get_iv_size ( MCRYPT_CAST_256,                              MCRYPT_MODE_CFB ), MCRYPT_RAND ); $key = "qwe233jk312jx813893xk312"; // ключ для расшифрования $cook_name = "maks"; $cipher = mcrypt_encrypt ( MCRYPT_CAST_256, $key, $cook_name,                      MCRYPT_MODE_CFB, $vector ); setcookie ( "username", $cipher, "/decrypt.php" );?>

Как видно из листинга 10.13, расшифровка cookie проводится при помощи скрипта decrypt.php, код которого приведен ниже:



Поделиться:


Последнее изменение этой страницы: 2020-11-28; просмотров: 145; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.174.55 (0.004 с.)