帮助改进我的文件上传方法(金字塔框架)

sid*_*der 14 python pylons multipart pyramid

目前,我使用以下方法在Pyramid中上传文件(通过HTML表单).

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()
Run Code Online (Sandbox Code Playgroud)

我只是想知道,这是保存文件上传的好方法,我的方法有任何安全问题吗?我怎么能改进我的方法.谢谢.

Sea*_*ira 14

你会想要使用像werkzug这样的东西,safe_join而不是仅仅将上传目录添加到给定的文件名中.攻击者可以创建一个文件名为的POST,../../../some/important/path并导致此脚本覆盖您的文件之外的某些文件upload_directory.