Безопасность и cookie
20.03.2008
Зачастую в cookie хранятся конфиденциальные данные. Соответственно, разработчик должен позаботиться о том, чтобы злоумышленники не получили доступ к данной информации.
Известно 4 метода защиты данных, хранимых в cookie:
- отправка cookie по ssl соединению;
- шифрование cookie;
- установка области видимости;
- ограничение доступа для доменов.
При комплексном использовании всех 4-х методов защиты информации, хранимой в cookie, данные будут наиболее защищены.
Перейдем к рассмотрению практической реализации вышеперечисленных методов.
Отправка cookie по ssl соединению
Проще говоря, следует разрешить отправку cookie только по защищенным HTTP запросам. В данном случае значительно затрудняется перехват данных, при передаче между клиентом и сервером.
На практике все выглядит гораздо проще. Нам достаточно задать 6-му параметру функции setcookie значение "1".
Шифрование cookie
В этом случае известно множество методов шифрования cookie. Рассмотрим на примере один из них.
Сначала следует создать декодировщик. Назовем его decrupt_cookie.php:
$cursor = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,MCRYPT_MODE_CFB), MCRYPT_RAND);
# Ключ
$s_key = "sdfsd98k98sdfsdf944775df";
$decrypt_name = mcrypt_ decrypt(MCRYPT_CAST_256,$s_key,$username, MCRYPT_MODE_CFB,$cursor);
echo $decrypt_name;
Далее представлен сам код шифрования cookie:
$cursor = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,MCRYPT_MODE_CFB), MCRYPT_RAND);
$s_key = "sdfsd98k98sdfsdf944775df";
$cook_name = "cookie1";
$cipher = mcrypt_encrypt(MCRYPT_CAST_256,$s_key,$cook_name, MCRYPT_MODE_CFB,$cursor);
setcookie("username", $cipher, "/decrypt_cookie.php");
Установка области видимости
Ограничить область "видимости" cookie можно как для отдельного каталога, так и для конкретной страницы. Поскольку cookie доступны для всех каталогов, начиная от корневого.
Область видимости cookie задается в 3-м параметре функции setcookie.
Например:
- cookie доступны только для определенного каталога и его подкаталогов:
setcookie("cookiename", $cooki_value, '/folder_1/'); - cookie доступны только для определенной страницы:
setcookie("cookiename", $cooki_value, '/folder_1/page.php');
Ограничение доступа для доменов
Доступ от определенных доменов к информации, хранимой в cookie, также следует ограничить, так как в одном из способов взлома пользовательских аккаунтов используется чтение всех cookie пользователя. Потом нужные cookie подменяют и получают доступ к конфиденциальной информации...
Для того чтобы ограничить доступ к cookie для одного домена или их списка существует 4-й параметр.
setcookie("cookiename", $cooki_value, '/folder_1/page.php', 'mihalytch.org.ua');
Tags: Cookie, Mihalytch, PHP, безопасность
Оставить комментарий