|
PmWikiRu / PmWiki? включает сценарий называемый upload.php позволяющий пользователям закачивать файлы на вики сервер пользуясь веб броузером. Закачанные файлы (по другому называемые вложения) могут быть легко доступны в помощью разметки на вики страницах. Эта страница рассказывается как установить и настроить функцию закачки. Некоторые замечания по поводу безопасностиОтносительно функции закачки PmWiki занимает отчасти параноидальную позицию. Соответственно, настройки по умолчанию для закачек тяготеют к стремлению ограничить эту функцию как можно сильнее:
В таком исполнении возможность повреждений ограничена пока/если администратор вики явно не ослабит ограничения. Имейте в виду, что позволение пользователям (анонимно!) закачивать файлы на ваш веб сервер влечёт за собой некоторую долю риска. Сценарий upload.php специально разработан для снижения риска, но администраторы вики должны знать, что потенциальная уязвимость существует, и что расконфигурация утилиты закачки может иметь нежелательные последствия. Изначально, авторизованным пользователям разрешена перезапись файлов до того уже закачаных без возможности восстановления предыдущей версии файла. Если вы хотите запретить пользователям перезаписывать файлы добавьте следующую строку в config.php: $EnableUploadOverwrite = 0;
По другому, администратор может сохранить предыдущие версии закачек. Также администратор может настроить PmWiki так, чтобы механизм паролей управлял доступом к закачанным файлам. Базовая установкаЕсли переменная $EnableUpload в config.php не равна нулю, то stdconfig.php автоматически подключает сценарий upload.php. К тому же, папка для закачивания файлов и URL этой папки на сервере можно установить переменными $UploadDir и $UploadUrlFmt в config.php. Изначально, $UploadDir и $UploadUrlFmt предполагают, что закачанные файлы хранятся в папке с именем uploads/ в текущей папке (обычно содержащую единственный pmwiki.php). Ко всему прочему, config.php также устанавливает начальный пароль закачки (смотри Администрирование паролей). Таким образом, основной config.php для закачек может выглядеть так: <?php if (!defined('PmWiki')) exit(); ## Enable uploads and set a site-wide default upload password. $EnableUpload = 1; $DefaultPasswords['upload'] = crypt('secret'); Важно: Не создавайте пока папку uploads. Читайте следующий параграф. Вам может понадобиться явно установить папку для хранения закачек и указать URL отвечающий за эту папку: $UploadDir = "/home/john/public_html/uploads"; $UploadUrlFmt = [="http://www.john.com/~john/uploads";=] Закачки могут быть настроены переменной $UploadPrefixFmt для всего сайта, погруппно или постранично. Она указывает будут ли все закачки храниться в одной папке, или в отдельной папке для каждой группы или в отдельной папке каждой страницы. По умолчанию, закачка организована погруппно. Закачки для всего сайта делаются так: $UploadPrefixFmt = '';
Чтобы сделать закачку постраничной, воспользуйтесь одним из двух вариантов: $UploadPrefixFmt = '/$FullName'; $UploadPrefixFmt = '/$Group/$Name'; Папка закачекЧтобы функция закачки работала хорошо, папка указанная в $UploadDir должна быть записываемой для процесса веб сервера и желательно, чтобы она была доступна через веб (например, в папке public_html). Выполнение PmWiki с включенными закачками выведет приглашение с перечислением шагов требуемых для создания папки закачек на вашем сервере(оно отличается от сервера к серверу). Закачивание файловС тех пор как функция закачки включена, пользователи получают доступ к диалогу закачке посредством приписывания " Другой способ получить диалог закачки - это вставить разметку " Изначально, PmWiki распределяет закачанные файлы по отдельным папка для каждой группы. Это можно изменить поправив переменную $UploadPrefixFmt. Подробнее читай Cookbook:UploadGroups. Сохранение версий закачанных файловИзначально, PmWiki не поддерживает сохранение версий закачанных файлов. Однако, установив $EnableUploadVersions=1; администратор может включить сохранение старых версий закачанных файлов в папке для закачанных файлов наравне с остальными версиями. Ограничение закачки файлов для групп и страницПользуясь подстройкой по группам закачка файлов может быть включена только для указанных групп или страниц. Просто установите Ограничение закачки файлов по типам и размеруПрежде чем сохранить закачанный файл в папку закачек сценарий выполняет ряд проверок. Основные проверки описаны ниже:
$UploadMaxSize = 102400;
Кроме того, наибольший размер файла также может быть указан для каждого типа закачиваемого файла. Соответственно, администратор может ограничить размер файлов " $UploadExtSize['gif'] = 20480; # ограничить .gif файлы до 20K
Установка записи в ноль совершенно запрещает закачивать файлы этого типа: $UploadExtSize['zip'] = 0; # запретить .zip файлы
Добавление новых типов файлов к списку разрешённыхЧтобы добавить новый тип в список разрешённых типов файлов добавьте строчку подобную следующей в файл настройки: $UploadExts['ext'] = 'content-type';
где ext это добавляемое расширение файла и content-type это тип содержимого (MIME тип) применяемый к файлам с таким расширением. К примеру, для добавления расширения ' $UploadExts['dxf'] = 'image/x-dxf';
Каждая запись в $UploadExts должна быть расширением и mime-типов ассоциируемым с этим расширением, например так: $UploadExts = array( 'gif' => 'image/gif', 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpeg', 'png' => 'image/png', 'xxx' => 'yyyy/zzz' ) Нет необходимости указывать в этом списке типы файлов, которые PmWiki уже знает (сценарий upload.php добавляет умолчания PmWiki для минимальной административной поддержки). Другой предел размера файлаЕсли и другие действующие факторы оказывающие влияние на размер закачиваемого файла. В Apache 2.0 есть директива LimitRequestBody управляющая максимальным размеров всего что послано (posted) (включая закачку файлов). Apache по умолчанию считает этот размер неограниченным. Однако, некоторые дистрибутивы Linux (в т.ч. Red Had Linux) ограничивает посылку 512 килобайтами, что требует изменения или увеличения. (Обычно эти настройки находятся в файле конфигурации httpd.conf или в файле /etc/httpd/conf.d.) Проблема отмеченная в Red Hat 8.0/9.0 с Apache 2.0.x определяется как ошибка "Requested content-length of 670955 is larger than the configured limit of 524288" и выглядит в броузере как "Page not found"(страница не найдена). Попытка изменить указанные выше настройки не помогает с PHP, т.к. у Red Hat 8.0/9.0 есть дополнительный файл настроек для PHP /etc/httpd/conf.d/php.conf. Увеличение числа в строке "LimitRequestBody 524288" решает эту проблему. PHP сам по себе имеет два ограничения на закачку файла (часто расположеные в /etc/php.ini). Первое - это параметр Максимальный размер закачиваемого файла определяется из наименьшего значения среди трёх переменных: PmWiki наибольший размер файла, предел размера запроса Apache и параметр размера файла PHP. Защита паролем закачанных файловУстановка пароля на просмотр для страниц(или групп) предотвращает просмотр и доступ к файлам страницы, но для закрытия прямого доступа к файлам (в папке uploads/) надо сделать следующее:
Смотри Cookbook:SecureAttachments. Другие замечания
file_uploads = On
Заметьте, что если вы измените это значение, httpd (веб сервер) должен быть перезапущен (restart). Другой способ проверить разрешены ли закачки на сервере - это установить $EnableDiag=1 (config.php) и вызвать любую страницу с ?action=phpinfo в URL. Переменная " << AuthUser | Документация | Интернационализация >> Как мне запретить закачку файлов определённого типа? Вот пример чего надо добавить в ваш файл local/config.php для запрета закачавания .zip файлов:
Оригинал перевода PmWikiRu.UploadsAdmin -
Ссылаются |