parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

MoKo 23.11.2014 17:00

У нас исторически например классы и шаблоны лежат вне веб-пространства, поэтому каждый cgi/auto.p содержит такие строки:

$DATA_DIR[/../data]
$TEMP_DIR[/../temp]
$CACHE_DIR[$TEMP_DIR/cache]

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

"file-spec - символы * ? " < > | преобразуются в _XX, где XX - код символа в шестнадцатеричной форме "

Но там есть тонкости, поскольку file-spec преобразование кажется делается обязательно, не только для того, что передано пользователем.

С другой стороны, возможность пользователю передать путь и имя файла - не лучшая идея. Даже без хакеров могут возникнуть проблемы например с кириллицей. Поэтому мы у себя делаем что-то типа ^math:md5[^file:justname[$file.name]].<расширение из разрешенного списка> (^math:md5[$form:subdir] для директории).

  • .save[/../], Саян 23.11.2014 14:07
    • Ответ, MoKo 23.11.2014 17:00