Как я могу использовать PHP для создания непредсказуемых идентификаторов сеансов cookie - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть сайт, который должен соответствовать требованиям PCI.

Сайт использует Magento 1.5.1 (Magento - это система на основе PHP), а ошибка соответствия PCI - это предсказуемые идентификаторы сеансов cookie.

Я предполагаю, что это означает, что они хотят, чтобы cookie в Magento с именем "frontend" был изменен на случайный UUID. Я бы предположил, что это можно обойтись без модификации или расширения ядра, но я не могу найти настройки для этого.

Мысли

Вот описание уязвимости:

Удаленное веб-приложение использует предсказуемый сеанс на основе файлов cookie. Идентификаторы. В идеале идентификаторы сеансов - это случайно сгенерированные числа, которые не могут быть угаданным злоумышленниками. Если идентификатор сеанса предсказуем, злоумышленник может захватить активную жертву

1 Ответ

0 голосов
/ 12 декабря 2011

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

есть функция current_domain(), на которую ссылается приведенный ниже код, которая взята из моей платформы с открытым исходным кодом (ссылка на файл, содержащий функцию). Если вам не нужна динамическая замена домена, вы можете просто жестко закодировать свой домен там.

<?
ini_set( 'session.use_trans_sid',       false                   );
ini_set( 'url_rewriter.tags',           ''                      );
ini_set( 'session.use_cookies',         true                    );
ini_set( 'session.use_only_cookies',    true                    );
ini_set( 'session.name',                sha1( current_domain()  ) ); // current domain is a function implemented in tgsf
ini_set( 'session.cookie_lifetime',     0                       ); // until browser is closed.  I implement this server side

ini_set( 'session.hash_function',           1 ); // sha-1
ini_set( 'session.hash_bits_per_character', 6 );

// only if host is not localhost 
ini_set( 'session.cookie_domain', 'www.example.com' );

// use for localhost
//ini_set( 'session.cookie_domain', null );

ini_set( 'session.cookie_path', '/' ); // limit as much as you can for security
ini_set( 'session.cache_limiter',           'nocache' ); //prevents back button displaying a page after session is dead
ini_set( 'session.cookie_httponly',         true ); // helps prevent xss by preventing javascript access to the session cookie (on SOME browsers, not all)
...