Новости Joomla

Загадочный параметр $live_site в configuration.php Joomla

Загадочный параметр $live_site в configuration.php Joomla

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен? А нужен он в 2-х случаях:

  • для работы класса Joomla\CMS\Uri\Uri, который часто используется в коде Joomla для работы методов
    Uri::root() и
    Uri::base(), а значит может влиять и на работу в том числе ajax-скриптов.
  • для работы Joomla в CLI - командной строке сервера. В случае если вы используете в вашем CLI-плагине методы опять-таки класса Uri, то CLI ничего не знает о текущем домене, так как запускается вне web-сервера.

Поэтому домен нужно указывать принудительно. Либо с помощью параметра командной строки

--live-site, например,
—live-site=https://site.ru/. Со слешем на конце, иначе в CLI адрес сайта станет
https://site.rujoomla.php.Либо в параметре
$live_site в файле configuration.php, так как
CliApplication берёт настройку оттуда, если параметр команды не указан или пуст.

⚠️ Иначе в качестве хоста и url класса Uri будет установлено https://joomla.invalid/set/by/console/application. В самом же коде команды получить параметр

$live_site можно из объекта приложения

<?php protected function doExecute(InputInterface $input, OutputInterface $output): int { //... $live_site = $this->getApplication()->get('live_site'); //... }

и исходя из этого строить дальнейшую логику.

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 6428 Просмотров
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
На сайте в iframe отображались  страницы другого сайта. Но он пернешел на протокол https и я подозреваю, что в настройках хостинга  или еще как, например с помощью  X-Frame-Options, прописал запрет на отображение свох страниц в  iframe.
Тут предлагают решение с использованием cURL:
https://stackoverflow.com/questions/14953867/how-to-get-page-content-using-curl
Я абсолютно в этом не разбираюсь. Есть какое нибудь решение, кто то решал такую проблему?
« Последнее редактирование: 21.07.2020, 15:35:51 от x1 »
*

AlexB

  • Завсегдатай
  • 1973
  • 54 / 2
Re: https + X-Frame-Options, как отобразить iframe?
« Ответ #1 : 21.07.2020, 10:53:59 »
а просто к фреймам добавить https  вместо http?
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #2 : 21.07.2020, 10:56:40 »
Да нет, ну не настолько же я... Заменял, и просто два слэша оставлял - все работает для материалов с других сайтов. Firefox (но только одна версия, не портабл) сообщает:  сайт запрещает... поскольку его страница внедрена в другой сайт...
Цитировать
Firefox не может открыть эту страницу
Для обеспечения вашей безопасности ххххх.com не разрешил Firefox отобразить страницу, так как она встроена в другой сайт. Чтобы увидеть эту страницу, вам нужно открыть её в новом окне.
В других броузерах iframe пустой, без сообщений.
« Последнее редактирование: 21.07.2020, 11:00:56 от x1 »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #3 : 21.07.2020, 11:08:23 »
Тут нужно прокси писать, учитывающий особенности сайта-донора. Суть в том, что ты на стороне своего сайта через file_get_constents() запрашиваешь контент стороннего сайта и затем выводишь у себя, хоть во фрейме, хоть без. Проблема тут лишь в обработке ссылок и скриптов, так как если не учесть их, функционал стороннего сайта может тупо поломаться.
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #4 : 21.07.2020, 11:19:46 »
Тут нужно прокси писать
Мне бы рабочий пример, я бы повторил, а с нуля не потяну.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #5 : 21.07.2020, 11:46:13 »
Мне бы рабочий пример, я бы повторил, а с нуля не потяну.



В качестве примера, разместите у себя на сайте файл test.php со следующим содержимым:
Код
<?php

// Указываем тип документа и кодировку:

header('Content-Type: text/javascript; charset=utf-8');

// Включаем отображение ошибок:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

// Создаём контекст запроса, а конкретно делаем подмену User-Agent, чтобы не спалили:

$options = array(
'http' => array(
'method'  => 'GET',
'header' => 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
)
);

$context  = stream_context_create($options);

// Делаем GET-запрос по указанному адресу и результат пишем в переменную:

$url = 'https://joomlaforum.ru';

$html = file_get_contents($url, false, $context);

// Выводим то, что записано в переменной $html:

echo $html;
Далее откройте файл test.php из браузера, ну типа просто перейдите на страницу http://твойсайт.рф/test.php
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #6 : 21.07.2020, 11:58:47 »
Спасибо, Сработало! Только исправил content-type на html.
То, что надо! Плюсик добавил.
« Последнее редактирование: 21.07.2020, 12:12:21 от x1 »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #7 : 21.07.2020, 14:05:37 »
Спасибо, Сработало! Только исправил content-type на HTML.
То, что надо! Плюсик добавил.

Сори, да с типом документа я ошибся. Я обычно способом выше JavaScript от форм обратной связи отдаю, чтобы боты не пролезли, делаю там внутри кучу проверок, прежде чем выдать сам скрипт для отправки формы.
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
Re: https + X-Frame-Options, как отобразить в iframe?
« Ответ #8 : 21.07.2020, 14:08:14 »
чтобы боты не пролезли
Да? В моем конкретном случае такой способ отображения - безопасный?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
RE: https + X-Frame-Options, как отобразить в iframe?
« Ответ #9 : 22.07.2020, 11:35:31 »
Да? В моем конкретном случае такой способ отображения - безопасный?

Относительно. В качестве примера, рассмотрим самый плохой вариант. Допустим кодом выше, вы запроксировали чужой сайт и вывели у себя на сайте внутри iframe. Прикол в том, что если фрейм и сайт загружены с одного домена, то фрейм автоматически имеет доступ наружу, к контенту самого сайта. Соответственно, если владелец сайта донора каким-то образом узнает, что вы зеркалите их контент в режиме реального времени, то он (владелец) может заморочиться и отдать вам вместе с контентом некий JavaSscript вирус, который может доставить неприятностей - от того, что перехватывать данные с ваших форм, до того чтобы используя авторизованных пользователей засрать вам базы или посредством инъекции кода и применения различных уязвимостей перехватить контроль над сайтом.

Это конечно крайне маловероятный сценарий, это надо быть очень крутым спецом, чтобы реализовать взлом чужого сайта вот так походя, но я просто рассмотрел самый плохой вариант с точки зрения безопасности.
*

x1

  • Давно я тут
  • 635
  • 15 / 0
  • Linux — это Windows для бытовой техники
RE: https + X-Frame-Options, как отобразить в iframe?
« Ответ #10 : 22.07.2020, 14:38:27 »
Спасибо за разьяснение.
Я сделал так: гружу их страницу вашим кодом, вырезаю нужный мне информационный блок (у них его генерирует компонент, потому вырезать легко по ключевым тегам).
Затем создаю новый HTML файл со своими стилями и своим header, вставляю в него вырезанный блок в body и сохраняю такой файл в папку cache.
А непосредственно уже во фрейм грузится именно этот файл. 
Свои стили, ни какие их скрипты не подгружаются. Может не профессионально, но меня все устраивает.
Еще раз спасибо за посмощь.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Вывод значений из custom fields материала в модуле по имени поля

Автор goga_pgasovav

Ответов: 3
Просмотров: 982
Последний ответ 30.12.2024, 13:22:11
от goga_pgasovav
Переход с http на https

Автор Andrey67

Ответов: 3
Просмотров: 873
Последний ответ 10.09.2024, 17:01:58
от Andrey67
[Решено] Получить category description image в index.php шаблона

Автор goga_pgasovav

Ответов: 6
Просмотров: 1025
Последний ответ 12.07.2024, 17:06:14
от goga_pgasovav
[Решено] Перестали работать переходы по меню сайта

Автор AlexP750

Ответов: 12
Просмотров: 1640
Последний ответ 06.02.2024, 12:42:26
от AlexP750
[Решено] Ссылка на домен и текущий шаблон в блоге категории

Автор goga_pgasovav

Ответов: 2
Просмотров: 729
Последний ответ 06.03.2023, 16:30:23
от goga_pgasovav