Форуми / National / Russian / Тех. поддержка / Экстраполе file - потенциальная уязвимость?

Вопрос к разработчикам о целесообразности использования экстраполя file

Roffun
#41057 02.10.2015 17:46

Добрый день,

у меня появился вопрос к разработчикам Cotonti насчет целесообразности использования экстраполей типа file.

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

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

Вопрос:

Создание экстраполя file c проверкой расширений txt,html,  и размещение его в шаблон , обрамленное условием "только для админа" несет в себе уязвимость ?

если да, то почему экстраполе этого типа доступно для создания без пояснения о риске?

Есть плагин confirmtheright, который при установке создает два экстраполя типа file для users, и на этом его работа заканчивается. Дальше работают теги размещенные в шаблон:

<!-- IF {PHP.cot_plugins_active.confirmtheright} AND {PHP.usr.isadmin} -->
    <tr>
        <td>{USERS_PROFILE_CONFIRMTHERIGHT1_TITLE} <small>( {PHP.cot_extrafields.cot_users.CONFIRMTHERIGHT1.field_variants} )</small></td>
        <td>{USERS_PROFILE_CONFIRMTHERIGHT1}</td>
    </tr>
    <tr>
        <td>{USERS_PROFILE_CONFIRMTHERIGHT2_TITLE} <small>( {PHP.cot_extrafields.cot_users.CONFIRMTHERIGHT2.field_variants} )</small></td>
        <td>{USERS_PROFILE_CONFIRMTHERIGHT2}</td>
    </tr>
<!-- ENDIF -->

Macik написал что есть потенциальная уязвимость:  

нет проверки на пользователя, который производит заливку файла. Т.е. любой пользователь зарегистрированный в системе может залить свой файл

Порекомендовал сделать проверку:

Полагаться на проверку в шаблоне и отображение полей нельзя! 
Сама форма может быть подделана пользователем и даже, если нет полей, тебе на сервер могут придти доп. данные в POST запросе. 
Поэтому если ты их не фильтруешь, система может их обработать, как если бы эти поля были в форме (это особенно касается экстраполей, которые обрабатываются «автоматически»)

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

Сама логика ситуации заключается в том, что нужно было каждый раз загружать/удалять на сервер проверочный файл, или создавать экстраполе file, для каждого сайта, чтобы подтверждать права с помощью загрузки текстового или html файла на сервер.

Поэтому решено было сделать плагин, который бы это поле (несколько) создавал. А чтобы скрыть от других пользователей кроме админа, использовался условный оператор в шаблоне.

Разница между установкой плагина и ручным созданием поля для каждого сайта - только в автоматизации процесса создания поля.

  • Нужна ли в плагине проверка того, к чему он не имеет прямого отношения ?
  • Насколько безопасно использовать экстраполе file в разных частях сайта для определенных файлов (изображения, txt, html)
Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts