Помогите улучшить мой метод загрузки файлов (фреймворк Pyramid) - PullRequest
14 голосов
/ 27 июля 2011

В настоящее время я использую следующий метод для загрузки файлов (через HTML-форму) в Pyramid.

if request.params.get('form.submitted'):

    upload_directory = os.getcwd() + '/myapp/static/uploads/'

    my_file = request.POST.get('thumbnail')
    saved_file = str(upload_directory) + str(my_file.filename)

    perm_file = open(saved_file, 'w')

    shutil.copyfileobj(my_file.file, perm_file)
    my_file.file.close()
    perm_file.close()

Мне просто интересно, это хороший способ сохранения файловых загрузок, есть ли защита?касается моего метода?Как еще я могу улучшить свой метод.Спасибо.

1 Ответ

14 голосов
/ 27 июля 2011

Вы захотите использовать что-то вроде werkzug safe_join, а не просто добавлять каталог загрузки к указанному имени файла. Злоумышленник может создать POST с именем файла ../../../some/important/path и заставить этот скрипт перезаписать какой-либо файл за пределами вашего upload_directory.

...