Как я могу использовать PHP для создания непредсказуемых идентификаторов сеанса cookie

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

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

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

Мысли?

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

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


person Garii    schedule 12.12.2011    source источник


Ответы (1)


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

в приведенном ниже коде есть ссылка на функцию 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)
person Tim G    schedule 12.12.2011