Первоначальный ситуация
Для сайта, который я настраиваю, я искал целую область защиты загрузок / загрузок и ограничения доступа к ним на основе пользовательских ролей / возможностей. Конечно, я прочитал некоторые из предыдущих вопросов, связанных с (общей) темой здесь, для справочных целей наиболее важные / интересные, которые я нашел:
- Как защитить загрузки, если пользователь не вошел в систему?
- Как ограничить доступ к загруженным файлам?
- Ограничение доступа к файлам в определенной папке
- Как сделать медиафайл приватным?
- Слияние скрипта загрузки PHP в `functions.php`
Дополнительные примечания
Как правило, неплохо бы повысить безопасность вашей установки WordPress - например, защитить свою wp-config.php
- есть много вещей, которые вы можете и должны сделать. Существует масса информации, как это сделать. Я нахожусь в контексте этого вопроса в основном о моих загрузках / загрузках.
Загрузка WordPress не защищена, каждый может просматривать uploads
папку, если вы не помешаете этому с помощью .htaccess
:
Options All -Indexes
.htaccess
Файл должен быть помещен в uploads
папку. Но это на самом деле не обеспечивает их безопасность, а только усложняет поиск файлов. Кроме того, вы можете предотвратить hotlinking
, существенно ограничив доступ на основе referrer
- хотя это немного другой случай, я подумал, что упомяну это, я не буду более подробно останавливаться, вы можете найти много информации об этом.
Конечно, есть возможность сделать посты приватными или создать собственный тип поста с подходящими файлами шаблонов, чтобы сделать этот тип поста приватным, но это не защищает ваши файлы. То же самое можно сказать и об обёртывании файлов в условных выражениях типа is_user_logged_in()
или is_admin()
.
На сайте sidenote есть множество плагинов, которые обещают сделать ваши файлы безопасными и защищенными, но многие из них просто притворяются, что некоторые из них приведены выше. Я просто излагаю это, потому что я уверен, что это известно не каждому бобу, так что имейте это в виду.
Задача
Мое намерение состояло в том, чтобы иметь возможность ограничить доступ к (некоторым) загрузкам и соответственно загрузкам. И чтобы никто случайно не имел к ним доступа, не случайно или если кто-то знал имя файла, файлы должны быть действительно конфиденциальными и безопасными. Ведь только определенные люди должны иметь доступ без исключений.
Кроме того, мне не нужно было приватизировать весь сайт, это было бы контрпродуктивно - оно используется для публичных презентаций. Более того, я хотел, чтобы решение было легким в использовании, по той простой причине, что некоторые люди, работающие с ним, не являются компьютерными экспертами, как это часто бывает.
Вопрос
Отсюда вопрос: существует ли (относительно) простой способ ограничить доступ к (некоторым) загрузкам и соответствующим загрузкам? И, как я это сделал, это означает способ действительно защитить и защитить их?
Ответы:
Я отвечаю на свой вопрос, потому что нашел решение, но мне действительно интересно ваше мнение по этому поводу. Или, может быть, у вас есть намного лучшее решение, если так, я бы очень хотел рассказать об этом.
Результат исследования
Результаты моего исследования были:
1. получить файлы вне корня документа,
www
папки;2. запретить любой прямой доступ к папке, содержащей файлы;
3. позволить скрипту обрабатывать запросы к файлам;
Источники для этих пунктов - по крайней мере, в основном - включены в мой вопрос.
Решение
files
будет создана внутриwp-content
процесса;.htaccess
файл в новуюfiles
папку:.htaccess
:Options All -Indexes
Order Deny,Allow
Deny from all
download method
;output file
;allowed to download
;Заключительные мысли
Я думаю, что решение в значительной степени следует за результатами исследований. Помимо размещения файлов снаружи. Но ограничение доступа к каталогу и его защита и разрешение скрипту обрабатывать запросы к файлам уже выполнены. Ограничение доступа обрабатывается
.htaccess
и сценарий в этом случае является плагиномwp-downloadmanger
.Дополнительные примечания
download method
кoutput file
и, конечно, это обязательно, что
.htaccess
файл на местечтобы проверить тот факт, что плагин берет на себя роль скрипта, взгляните на
wp-downloadmanger.php
строки 207 - 227 (версия 1.6.1); это подразумевается как дополнительная точка к связанной информацииисточник