12.09 // Технические проблемы с сайтом
В течение последних дней несколько человек поставили меня в известность о технических проблемах на сайте:
- Нет доступа к страницам авторизации, настроек и регистрации — во всех случаях браузер выдаёт ошибку о некорректном редиректе. (В частности, это не даёт легитимным пользователям авторизоваться на сайте, но все те, кто имеют авторизованные cookie от прошлых сеансов, могут продолжать работать под своими учётными записями до истечения срока авторизации.)
- Не работают службы сайта, связанные с обработкой данных OpenPGP — выдаётся ошибка CGI-враппера.
Все эти случаи подтверждены. Первые по-видимому связаны с принудительным перенаправлением на HTTPS, установленным на этих страницах. Вторые — с вызовом CGI-обёртки, передающей данные бэк-энду GnuPG. По какой причине всё это вдруг вышло из строя — непонятно; может быть хостинг-провайдер произвёл изменение каких-то настроек сервера, не проинформировав об этом. В любом случае, до воскресенья у меня не будет времени разбираться в ситуации. Прошу проявить терпение.
SATtva
Источник: https://www.pgpru.com
комментариев: 11558 документов: 1036 редакций: 4118
Хостеру отправлен запрос с просьбой прокомментировать ситуацию или, если это ошибка, исправить её.
комментариев: 11558 документов: 1036 редакций: 4118
А какой такой slavehost? :-)
комментариев: 9796 документов: 488 редакций: 5664
:-)
комментариев: 11558 документов: 1036 редакций: 4118
Хостер пофиксил свои настройки?
комментариев: 11558 документов: 1036 редакций: 4118
И некоторые другие страницы.
комментариев: 11558 документов: 1036 редакций: 4118
корня злапричин ошибки. И наконец установил причину. Проблема решена, функциональность сайта восстановлена в полном объёме. С чем всех поздравляю.комментариев: 11558 документов: 1036 редакций: 4118
В какой-то момент вызов Perl-скрипта через fopen() перестал создавать поток, что стало приводить к ошибкам "openSpace-GPG: unable to open CGI wrapper" везде, где требовался вызов gpg. После длительной диагностики удалось установить причину: при формировании контекста для потока fopen() функцией stream_context_create() параметр method передавался в нижнем регистре (т.е. post или get). Серверу в какой-то момент это почему-то перестало нравится, и такие соединения он начал отвергать. Перевод значения в верхний регистр снял проблему.
Но тут выявилась другая: одни вызовы gpg выполнялись корректно, а другие из-за чего-то перестали производить вывод. То есть поток открывался корректно, корректно происходило исполнение gpg, но стандартный вывод оставался пуст. При этом прямой вызов Perl-скрипта в браузере отрабатывал корректно, весь вывод gpg успешно выводился. Как выяснилось, и здесь проблема заключалась в обёртке fopen(). В тех случаях, где метод запроса был POST с установленным хидером "Content-type: application/x-www-form-urlencoded", программа получала вывод от gpg и успешно выполнялась. Там же, где использовался метод GET, вывод был пуст (что особенно удивляет). Теперь все вызовы скрипта производятся POST-запросом.
Очередное доказательство тому, что взаимодействие множества разноплановых компонентов не добавляет системе надёжности.
комментариев: 271 документов: 13 редакций: 4
Знакомый приём. :) Скорее проблема в том, что нестрого следуют стандартам. Это просто обязательно при соединении компонентов от разных производителей. А ещё проблема, что защита от хакеров делается самым простым способом, а не самым правильным. Сам safe-mode в PHP является отличным примером, как не надо делать. :) Да таких анекдотов у каждого наберётся: например, интернет-провайдер не отправляет письма, содержащие последовательность ".js". Видать, защищали глупых пользователей от JavaScript-вирусов. Или при публикации в блоге делаются неактивными ссылки, содержащие "cgi-bin". Тоже "защита" от чего-то. :)
[/offtopic]
А какой именно тариф у masterhost'а? Советую обратить внимание на американские хостинги. Там обычно за небольшие деньги дают гораздо больше возможностей. К примеру, доступ к php.ini или сырым логам веб-сервера.
комментариев: 11558 документов: 1036 редакций: 4118
Наверное, запрет на прямое исполнение программного кода — просто защита от быдлокодеров, которые найдут любую возможность отстрелить себе ногу. Делать то же самое через промежуточный cgi-скрипт они не догадаются. :-)
Хостеру-то какое до них дело? Пусть ломают в пределах своего аккаунта что угодно :)
А речь о том, что allow_url_fopen – сама по себе опасная опция, наверное, даже более опасная, чем запрещённые exec() и компания. Ведь для того, чтобы использовать exec(), требуется найти уязвимость в движке и, в общем-то, взломщик мало что с этого поимеет (кроме удобства), ведь практически всё, что можно сделать через unix-консоль, можно делать и через PHP. А вот allow_url_fopen как раз создаёт уязвимости.