Ссылки на медиа перестают работать при копировании или цитировании, если включено «secure media»

Шаги для воспроизведения:

  1. Включите защищённые медиа.
  2. Создайте новую тему и перетащите медиафайл (подойдёт PDF-файл).
  3. Ответьте на свою же тему, вставив медиафайл через копирование-вставку (или просто процитируйте себя).

Теперь можно заметить, что при клике на оригинальное вложение медиа всё работает нормально, но клик по ссылке на процитированное/скопированное медиа (даже если это абсолютно та же самая ссылка) приводит к странице ошибки:
image
Подозреваю, что проблема может быть связана с тегом referrer, поскольку это единственное различие.

1 лайк

Не уверен, что это допустимый вариант использования. Защищённые медиа означают, что медиа-контент тесно связан с публикацией, а здесь речь идёт о свободной ассоциации.

@martin сможет подтвердить это в конце недели.

Спасибо за ваш ответ!

Если предполагается, что медиафайлы связаны с постом, то это гораздо более серьёзная «ошибка», потому что в текущем виде вы можете скопировать ссылку на медиафайл (она выглядит так: https://www.my.domain/secure-media-uploads/original/1X/db86496651c78aa64adbe43b2907654555002.pdf) и просто поделиться ею с любым пользователем, вошедшим в систему Discourse. Тот сможет вставить ссылку в адресную строку браузера (даже не открывая Discourse) и загрузить файл.

Эта функция работает только с S3, и неясно, включена ли она у вас.

Да, S3 включён. Иначе я не смог бы использовать «Secure Media».

Что ж, я рекомендую вам протестировать это гораздо тщательнее: опубликуйте изображение в личном сообщении и обратите внимание, что конечные пользователи, не имеющие доступа к личным сообщениям, не смогут его увидеть.

Если зарегистрированные пользователи имеют доступ к публикации с PDF-файлом, они смогут его скачать.

Ах, это хороший момент. Я проверю это сразу.

РЕДАКТИРОВАНИЕ: Ок, извините, вы правы, только пользователи с доступом к посту могут скачивать медиа. Тем не менее, это не ограничивается именно нажатием на ссылку поста, так как ссылка была скопирована, и у пользователя есть доступ к оригинальному медиа — я всё ещё считаю, что это должно позволять скачивать его, не заставляя пользователя копировать и вставлять URL в адресную строку.

Я постараюсь посмотреть на это на этой неделе, спасибо за отчет.

3 лайка

Извините за задержку, это исправлено в FIX: Add secure media url to SERVER_SIDE_ONLY list by martin-brennan · Pull Request #11348 · discourse/discourse · GitHub

3 лайка