serving files using django - is this a security vulnerability
        Posted  
        
            by Tom Tom
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Tom Tom
        
        
        
        Published on 2010-03-30T21:29:32Z
        Indexed on 
            2010/03/30
            21:33 UTC
        
        
        Read the original article
        Hit count: 387
        
I'm using the following code to serve uploaded files from a login secured view in a django app.
Do you think that there is a security vulnerability in this code? I'm a bit concerned about that the user could place arbitrary strings in the url after the upload/ and this is directly mapped to the local filesystem.
Actually I don't think that it is a vulnerability issue, since the access to the filesystem is restricted to the files in the folder defined with the UPLOAD_LOCATION setting.
UPLOAD_LOCATION = is set to a not publicly available folder on the webserver
url(r'^upload/(?P<file_url>[/,.,\s,_,\-,\w]+)', 'aeon_infrastructure.views.serve_upload_files', name='project_detail'),
@login_required
def serve_upload_files(request, file_url):
    import os.path
    import mimetypes
    mimetypes.init()
    try:
        file_path = settings.UPLOAD_LOCATION + '/' + file_url
        fsock = open(file_path,"r")
        file_name = os.path.basename(file_path)
        file_size = os.path.getsize(file_path)
        print "file size is: " + str(file_size)
        mime_type_guess = mimetypes.guess_type(file_name)
        if mime_type_guess is not None:
            response = HttpResponse(fsock, mimetype=mime_type_guess[0])
        response['Content-Disposition'] = 'attachment; filename=' + file_name
        #response.write(file)             
    except IOError:
        response = HttpResponseNotFound()
    return response
        © Stack Overflow or respective owner