Безопасность и cookie

Зачастую в cookie хранятся конфиденциальные данные. Соответственно, разработчик должен позаботиться о том, чтобы злоумышленники не получили доступ к данной информации.

Известно 4 метода защиты данных, хранимых в cookie:

  1. отправка cookie по ssl соединению;
  2. шифрование cookie;
  3. установка области видимости;
  4. ограничение доступа для доменов.

При комплексном использовании всех 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');

Leave a Reply




*