Ответ
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
- Ответ, Саян 24.11.2014 13:32