Osticket: Требуется действительный токен CSRF OsTicket 1.10

Созданный на 6 дек. 2016  ·  36Комментарии  ·  Источник: osTicket/osTicket

Привет, есть помощь в решении этой проблемы?
OsTicket 1.10
Победа 2012 R2
Apache 2.4
Php 7.1
Все установил, получается вот такая проблема. Много читал, нашел решение изменить "session.auto_start" на 1, и это сработало для меня. Я вошел в систему, но через некоторое время все еще получаю ту же проблему.

bug php 7

Самый полезный комментарий

Кто-нибудь попробует выше патч 424bfc9? Это решило мою проблему.
Я решу сделать пул-реквест на основе отзывов.

Все 36 Комментарий

Я предполагаю, что это потому, что вы используете PHP 7.1.0 (выпущенный несколько дней назад). Насколько я понимаю, osticket 1.10 еще не полностью совместим с 7.0. Вы можете снизить оценку до 5,6 и посмотреть, поможет ли это.

Спасибо! Попробую завтра переустановить.
Все эти php-файлы для меня в новинку, поэтому я только что скачал все актуальные версии. Думаю, должно быть какое-то уведомление о том, что php 7+ еще официально не поддерживается.

У меня такая же проблема с PHP 7.1. Я перейду на PHP 5.6. Все работает нормально со старым PHP.
Кажется, это другая проблема с OsTicket и PHP 7 https://github.com/osTicket/osTicket/issues/3033

У меня была проблема с OSticket 1.10, Apache и PHP 7.1. После понижения версии PHP до 7.0.14 ошибка исчезла. Надеюсь, это кому-нибудь поможет.

Над этим работают? К настоящему времени выпущен PHP 7.1, и поддержка osTicket для него была бы отличной.

Я надеюсь, что над этим работают

У меня такая же проблема с PHP 7.1 + osticket 1.10.
Немного информации о моих раскопках:

  • Когда я захожу в scp / login.php

    • Действительный Set-Cookie был отправлен от osticket: "OSTSESSID=nntpjei4195nd6ru6h759mtk1d; expires=Tue, 28-Mar-2017 12:46:50 GMT; Max-Age=86400; path=%PATH%"

    • Но соответствующая запись ost_session для этого ключа (nntpje ...) не была создана.

  • Затем, когда я отправляю имя пользователя и пароль:

    • DoesNotExist исключение в upload/include/class.ostsession.php(184): QuerySet->one() (конечно, это спасено.)

  • Когда я устанавливаю бэкэнд сеанса на memcache

    • Была показана та же ошибка.

Кто-нибудь попробует выше патч 424bfc9? Это решило мою проблему.
Я решу сделать пул-реквест на основе отзывов.

@kaorukobo, ваш патч у меня сработал, я использовал последнюю версию osticket и последнюю версию php 7.1 от remi. Спасибо!

@kaorukobo

Могу подтвердить, что исправление сработало и для меня. Centos 7, PHP 7.1.3 из Remi OSTicket 1.10

Соответствующий запрос на вытягивание был одобрен:
https://github.com/osTicket/osTicket/pull/3773

Я только что установил последнюю версию osTicket, я использую PHP версии 7.1.5 в Windows 7 Professional Edition с пакетом обновления 1 i586, и у меня есть действительный токен CSRF, необходимый при первом входе в систему администратора

Это ужасно. Та же проблема, что и https://github.com/osTicket/osTicket/issues/304 ? Хотел бы я знать перед обновлением. Я не могу вернуться на этот сервер, потому что для некоторых моих скриптов нужен PHP7. Это должен быть приоритет 1.

Уважаемый @ TomAshley303, похоже, что эта проблема с PHP 7 будет исправлена ​​не скоро, так как обновление PHP и другого программного обеспечения очень важно для безопасности. Я обновился до PHP 7.
Вот исправление, которое работает: https://github.com/osTicket/osTicket/commit/424bfc99d93b920f6162b602eeea41125086425d

К вашему сведению, у меня была такая же проблема, и на моей машине было неправильное время.

Только что узнал, что вход в мой OSticket возможен на PHP5.6. Как только я настроил свой сервер на PHP7.1, я больше не могу войти в OSTicket и получить сообщение «Требуется действительный токен CSRF».

@Richardvi osTicket поддерживает php7, а не php7.1. Так что это, вероятно, ваша проблема.

Хорошо спасибо!

Спасибо, брат, это действительно помогло.

Спасибо!!! Работает отлично :)

Я новичок в osTicket, если он не поддерживает php7.1.x, пока он не поддерживает.

У меня работает только нужно добавить новую строку в один файл 👍
https://github.com/osTicket/osTicket/commit/424bfc99d93b920f6162b602eeea41125086425d

Кто-нибудь знает, было ли это исправлено в последней версии 1.10.4 (вчера)?

Привет @ Я думаю, что эта проблема не исправлена, никогда не тестировал последний выпуск, который был выпущен недавно.
Вы можете прочитать в примечании к выпуску, что включает в себя обновление: https://github.com/osTicket/osTicket/commit/035fd0af32647199bae662eda6517f70e9225329

@PeopleInside

Это как-то решается в v1.11.0rc-1 с этим . Вместо пустого окна с сообщением об ошибке отображается страница входа с ошибкой «Действительный токен CSRF».

Ваше здоровье.

Windows + Apache + PHP версии 7.2.7

session.auto_start = 1 работал у меня

Ubuntu 18.04 x64 + Apache2 + PHP 7.2-10 + osT 1.10.4

/etc/php/7.2/apache2/php.ini session.auto_start = 1 у меня тоже работал.

/etc/php/7.2/apache2/php.ini session.auto_start = 1 у меня тоже работал.

Привет, @jpkh, большое спасибо за то, что поделились, где следует разместить session.auto_start = 1. Это редактирование конфигурации php (ini), я спрашиваю, что OsTicket следует изменить для решения этой проблемы. Обычно я предпочитаю делать исправления в программном обеспечении, а не на PHP. Приятно знать, что есть решение для работы с PHP 7.2, но, возможно, я подожду, чтобы понять, можно ли решить проблему на стороне OsTicket.

Последняя версия совместима с Php 7.0, поэтому вы можете понизить версию с 7.1 до 7.0. Легко исправить

В PHP 7.1 и выше вы должны возвращать строку из обработчика чтения сеанса, иначе вы получите сообщение об ошибке - в документации всегда говорилось, что он должен возвращать строку, но PHP только сейчас начал применять это. Просмотрите журналы php, чтобы узнать, есть ли у вас предупреждение PHP: session_start (): не удалось прочитать данные сеанса: пользователь

добавление следующей строки ПРОСТО перед возвратом в методе чтения в class.ostsession.php

if(!is_string($this->data->session_data)) {
    $this->data->session_data = strval($this->data->session_data);
}

Это гарантирует, что независимо от того, ЧТО вы вставляете в данные сеанса, вы всегда возвращаете строку так, как должны.

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

http://php.net/supported-versions.php

@auroraeosrose в class.ostsession.php есть две функции чтения, не могли бы вы указать строку, в которую нужно вставить этот фрагмент? функция чтения в строке 270? или тот, что на 183? PS спасибо за это решение ... Когда я использовал session.auto_start=1 он сломал одно из других приложений (TestLink), которые я запускаю на том же сервере, поэтому я ценю решение, которое включает только изменения в OST, а не php .ini

@davidtessier

Тот, что в классе DbSessionBackend , поместите его прямо над возвратом.

PS
Это решается в 1.11 с помощью:

3955

4344

Ваше здоровье.

Спасибо! Это сработало.

В PHP 7.1 и выше вы должны возвращать строку из обработчика чтения сеанса, иначе вы получите сообщение об ошибке - в документации всегда говорилось, что он должен возвращать строку, но PHP только сейчас начал применять это. Просмотрите журналы php, чтобы узнать, есть ли у вас предупреждение PHP: session_start (): не удалось прочитать данные сеанса: пользователь

добавление следующей строки ПРОСТО перед возвратом в методе чтения в class.ostsession.php

if(!is_string($this->data->session_data)) {
    $this->data->session_data = strval($this->data->session_data);
}

Это гарантирует, что независимо от того, ЧТО вы вставляете в данные сеанса, вы всегда возвращаете строку так, как должны.

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

http://php.net/supported-versions.php

Спасибо, у меня это работает.

Решение от @auroraeosrose также работало для меня на PHP7.2.15 и osticket 1.10.5

Решение @auroraeosrose работает на:

Идентификатор распространителя: Debian
Описание: Debian GNU / Linux 9.8 (растянуть)
Выпуск: 9.8
Кодовое имя: stretch
Apache 2.4
Версия PHP 7.2.16

Была ли эта страница полезной?
0 / 5 - 0 рейтинги