目前,我正在使用以下方法在金字塔中上传文件(通过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()
我只是想知道,这是保存文件上传的好方法,我的方法有任何安全问题吗?我怎么能改进我的方法。感谢。
答案 0 :(得分:14)
您需要使用werkzug的safe_join
之类的东西,而不是仅仅将上传目录添加到给定的文件名中。攻击者可以创建文件名为../../../some/important/path
的POST,并导致此脚本覆盖upload_directory
之外的某些文件。