Intereting Posts
Проблема с попыткой wp_query_posts с тегами У вас есть эффективные стратегии для запуска v2 сайта WP? Тип столбца Costum с costum (sub) таксономия Отсутствует страница «Регистрация» с BuddyPress Опубликовать комментарий WP для нескольких идентификаторов сообщения WooCommerce создает шаблоны пользовательских категорий Создание и публикация эскизов Добавление пользовательской таксономии в WordPress по умолчанию Тип сообщения Создание пользовательских отношений Добавление содержимого перед циклом в категории страниц проблема с настройкой постоянной ссылки программно Неплохо ли писать запись аудита / доступа / журнала транзакций непосредственно в файловую систему? Функция wp_title () в теге <title> Передача параметров на статическую главную страницу Мне нужно иметь два поля по 1-5 звездам, только редактируемые админами. Какой плагин я должен использовать?

простое решение для ограничения доступа (некоторые) загрузки / загрузки

Исходная ситуация

Для сайта, который я настраиваю, я изучал всю область обеспечения загрузки / загрузки и ограничения доступа к ним на основе пользовательских ролей / возможностей. Конечно, я прочитал некоторые из предыдущих вопросов, связанных с (общей) темой здесь, для справочных целей наиболее важные / интересные, которые я нашел:

  • Как защитить загрузки, если пользователь не зашел в систему?
  • Как ограничить доступ к загруженным файлам?
  • Ограничение доступа к файлам в определенной папке
  • Как сделать загрузку мультимедиа конфиденциальной?
  • Слияние скрипта загрузки PHP в `functions.php`

Дополнительные примечания

Как правило, неплохо было бы дополнительно повысить безопасность вашей установки WordPress – например, защитить ваш wp-config.php – есть много вещей, которые вы можете и должны делать. Там есть тонна информации о том, как это сделать. Я в контексте этого вопроса в основном касаюсь моих загрузок / загрузок.

Загрузка WordPress не защищена, каждый может просматривать папку uploads , если вы не предотвратите ее с помощью .htaccess :

 Options All -Indexes 

Файл .htaccess должен быть помещен в папку uploads . Но на самом деле это не защищает их, а просто затрудняет поиск файлов. Кроме того, вы можете запретить hotlinking , в настоящее время ограничивая доступ на основе referrer – хотя это немного отличается от случая, я думал, что я упоминаю об этом, я не уточняю, вы можете найти много информации об этом.

Конечно, есть возможность делать сообщения частными или создавать собственный тип сообщений с подходящими файлами шаблонов, чтобы сделать этот тип сообщений закрытым, но это не защищает ваши файлы. То же самое можно сказать для обертывания файлов в условных is_user_logged_in() таких как is_user_logged_in() или is_admin() .

В сиднейте есть много плагинов, которые обещают сделать ваши файлы безопасными и защищенными, но многие из них просто притворяются, что некоторые из них выше. Я просто понимаю это, потому что я уверен, что это неизвестно каждому из них – так что имейте это в виду.

Задача

Мое намерение состояло в том, чтобы иметь возможность ограничить доступ к (некоторым) загрузкам и, соответственно, загрузкам. И чтобы убедиться, что никто из них не может получить доступ к ним, не случайно или если кто-то знал имя файла, файлы должны быть действительно конфиденциальными и безопасными. Ведь только определенные люди должны иметь доступ без исключений.

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

Вопрос

Следовательно, существует ли (относительно) простой способ ограничить доступ к (некоторым) загрузкам и соответствующим загрузкам? И, как я это делал, это означает способ действительно защитить и защитить их?

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

Результаты исследования

Результаты моих исследований:
1. получить файлы вне корневого www документа, www ;
2. запретить прямой доступ к папке, содержащей файлы;
3. позволить скрипту обрабатывать запросы к файлам;
Источники для этих пунктов – по крайней мере в основном – включены в мой вопрос.

Решение

  1. Я установил плагин » wp-downloadmanager «
    • папка с именем files будет создана внутри wp-content в процессе;
  2. Я добавил файл .htaccess папку с новыми files :
    • содержимое .htaccess :
      Options All -Indexes
      Order Deny,Allow
      Deny from all
  3. Я изменил один важный параметр плагина:
    • вариант, который я имею в виду, – это download method ;
    • Я изменил его на output file ;
  4. Я добавил несколько файлов по интерфейсу плагина:
    • есть опция, allowed to download ;
    • который позволяет ограничить доступ на основе роли / возможностей пользователя;
  5. Я провел некоторое тестирование:
    • нет прямого доступа к файлам – не через адресную строку или wget;
    • публичные загрузки могут быть достигнуты через их постоянные ссылки – я выбираю »хорошие постоянные ссылки: да« и »скачать url: идентификатор файла« на панели параметров – адресная панель / wget тоже работает;
    • защищенные, ограниченные загрузки доступны только при входе в систему как пользователь с правильной ролью / возможностями;

Заключительные мысли

Я думаю, что решение в значительной степени следует результатам исследований. Помимо размещения файлов снаружи. Но ограничение доступа к / защите каталога и разрешение скриптов обрабатывать запросы файлов заполнено. Ограничение доступа обрабатывается .htaccess и скрипт в этом случае является плагином wp-downloadmanger .

Дополнительные примечания

  • абсолютно необходимо изменить download method на output file
  • и, конечно же, необходимо , чтобы файл .htaccess установлен

  • чтобы проверить, что плагин берет на себя роль сценария, посмотрите на wp-downloadmanger.php – о строках с 207 по 227 (версия 1.6.1); это подразумевается как дополнительная ссылка на связанную информацию