LINUX.ORG.RU
ФорумAdmin

Nextcloud + PIWIK

 ,


2

1

Доброго всем времени суток!

Как мониторить Nextcloud 12 с помощью PIWIK 3.0.4?

Nextckiud и PIWIK находятся на разных поддоменах: nextcloud.example.com и piwik.example.com

Задача очень не тривиальная, как может показаться, Nextcloud всеми силами противостоит внедрению кода аналитики piwik.

Есть 3 файла в которые нужно внедрить piwik:

/var/www/nextcloud/core/temlates/layout.base.php
/var/www/nextcloud/core/temlates/layout.guest.php
/var/www/nextcloud/core/temlates/layout.user.php

Но если просто стандартным способом вставить код счётчика piwik до </header> ничего работать не будет, потому что браузер клиента получает от nextcloud инструкции СSP (Content-Security-Policy) https://www.html5rocks.com/en/tutorials/security/content-security-policy/ которые блокируют запуск скриптов или загрузку картинок со сторонних узлов, конкретно браузер получает заголовки:

curl -vvvv https://nextcloud.exaple.com

< Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'nonce-bFV3U25zbkFOKzVFSTJsZnh4Y05CNE5KM09ITlk4R2VXeXl2Tlg2blBoMD06OHhSZC9meUxISzE5V2djS3ZuQmladG93bE1xREVwbkxNa0NmZmpEL1QzOD0='; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *; object-src 'none'; base-uri 'self';

< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Robots-Tag: none
< X-Download-Options: noopen
< X-Permitted-Cross-Domain-Policies: none

В самом браузере (например Safari веб-инспектор) мы получаем:

Refused to load https://piwik.example.com/piwik.js because it does not appear in the script-src directive of the Content Security Policy.
Хорошо, что может быть проще, просто в заголовок добавим адрес нашего PIWIK для разрешения запуска с него скриптов и/или загрузки картинок, вот так:
script-src 'self' 'unsafe-eval' https://piwik.example.com;
Заголовок меняется, curl -vvvv нам это показывает, но от этого браузер не получает разрешения загружать скрипты с piwik.example.com, почему так мне уже не понятно.

Content-Security-Policy в owncloud настраивается в этом файле:

/var/www/owncloud/lib/public/AppFramework/Http/EmptyContentSecurityPolicy.php
и
/var/www/owncloud/lib/public/AppFramework/Http/ContentSecurityPolicy.php
и
/var/www/owncloud/lib/private/legacy/response.php

Если непосредственно в Nginx прописать add_header Content-Security-Policy... это никак не поможет, в этом случае браузер одновреннно 2 политики получит, первую, ту что в EmptyContentSecurityPolicy.php прописана и вторую ту, что от Nginx пришла, интересно как он их в этом случае обрабатывает, они друг друга добавляют, а если правила конфликтуют?

В итоге у меня PIWIK категорически не хочет работать с NEXTCLOUD, а если точнее то браузеры через которые открывается NEXTCLOUD получают инструкции от СSP не грузить ничего со сторонних доменов, в частности с моего PIWIK.

В репозитории приложений для NEXTCLOUD есть приложение для интеграции с PIWIK, но оно не работает, по крайней мере этой интеграции у меня не случилось.

У кого-нибудь работает Nextcloud 12 + PIWIK 3.0.4, которые на разных доменах находятся?



Последнее исправление: Nuclerdragon (всего исправлений: 5)

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

imul ★★★★★
()
Ответ на: комментарий от imul

Конечно же я добавил в «те файлы» свой домен и «curl -vvvv» показал, что мой домен реально добавился, но при этом браузер всё равно не хочет ничего со стороннего домена загружать, очевидно, что я явно не очень дружу с политиками СSP, хотя вроде бы все просто, но не работает.

Возможно вот в этом засада:

script-src 'nonce-bFV3U25zbkFOKzVFSTJsZnh4Y05CNE5KM09ITlk4R2VXeXl2Tlg2blBoMD06OHhSZC9meUxISzE5V2djS3ZuQmladG93bE1xREVwbkxNa0NmZmpEL1QzOD0='
что это вообще?

Если СSP полностью выпилить из OWNCLOUD и рулить ими через nginx, то надо понимать, а что это такое?

Nuclerdragon
() автор топика
Ответ на: комментарий от Nuclerdragon

что это вообще?

у меня нет исходников под рукой, не могу сказать

Если СSP полностью выпилить из OWNCLOUD и рулить ими через nginx, то надо понимать, а что это такое?

Сделай так, чтобы ownclowd не отдавал заголовка Content-Security-Policy, а nginx отдавал и в nginx внеси то, что хочет браузер. В консоли дебаггера браузера будет всё написано.

imul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.