Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
php учебник_весь.doc
Скачиваний:
8
Добавлен:
21.09.2019
Размер:
2.06 Mб
Скачать

Удаление 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, код которого приведен ниже:

<?

// вектор начального состояния остается неизменным

$vector = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,

MCRYPT_MODE_CFB), MCRYPT_RAND);

$key = "qwe233jk312jx813893xk312";

$decrypt_name = mcrypt_ decrypt(MCRYPT_CAST_256, $key, $username,

MCRYPT_MODE_CFB, $vector);

echo("$decrypt_name, мы рады видеть вас на нашей страничке!");

?>

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

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

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

При таком ограничении заданной области видимости будут соответствовать домены с именами server.com, myservser.com, php.server.com и т. д., поскольку проверка на допустимость области видимости домена осуществляется по принципу концевого соответствия.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]