Nano Hash - криптовалюты, майнинг, программирование

Запускаете Drupal 7 с управлением сеансами на основе URL?

Из-за требований клиента я столкнулся с разработкой сайта Drupal 7, который не может использовать файлы cookie для управления сеансом.

Несколько старых тем на справочных сайтах предлагают просто установить соответствующую конфигурацию PHP в файле settings.php сайта:

ini_set('session.use_cookies', '0');
ini_set('session.use_only_cookies', '0');
ini_set('session.use_trans_sid', '1');

Однако, хотя это могло сработать 11 лет назад, сейчас это не работает.

Беглый взгляд на основной файл session.inc показывает, почему: вся обработка сеанса в Drupal написана с учетом того, что файлы cookie будут доступны.

Однако можно переопределить используемый обработчик сеанса, указав путь к новому обработчику в переменной session_inc.

Так что я мог бы решить эту проблему, написав новую версию session.inc и загрузив ее вместо другой, но я бы предпочел этого не делать, если в этом нет необходимости.

Я не могу найти какое-либо недавнее упоминание этой темы, но если кто-то может предложить какие-либо ресурсы или несколько советов о том, как переписать session.inc, я был бы рад их услышать.

13.03.2017

Ответы:


1

Итак, для реализации этого необходимы три вещи:

  • Entries in your settings.php file:

    $conf['session_inc'] = 'sites/all/modules/custom/my/session.inc';
    
    ini_set('session.use_cookies', '0');
    ini_set('session.use_only_cookies', '0');
    ini_set('session.use_trans_sid', '1');
    

  • Сделайте свою модифицированную версию session.inc. Главное использовать $_GET вместо $_COOKIES. (В итоге я удалил всю дополнительную защиту, используемую HTTPS, чтобы облегчить жизнь другой стороне.)
  • Put a hook_drupal_goto_alter in your module:

    function my_drupal_goto_alter(&$path, &$options, &$http_response_code) {
        if (ini_get('session.use_trans_sid')) {
            if (!isset($options['query'])) $options['query'] = array();
    
            $options['query'][session_name()] = session_id();
        }
    }
    

  • Для тех, кто беспокоится об аспекте безопасности: доступ к этому довольно небезопасному механизму будет осуществляться только с одного конкретного сервера. Этот сервер будет иметь запись HOSTS для несвязанного субдомена, и этот субдомен будет иметь свой собственный файл settings.php. Любой, кто получает доступ к сайту через обычный домен, получит обычную обработку сеанса Drupal; любой, кто получит доступ к субдомену с неправильного IP-адреса, будет заблокирован.

    13.03.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..