服务媒体文件的安全问题

时间:2014-09-05 19:44:44

标签: django

描述

我有一个网站,每个人都可以上传文件。它就像一个共享者,但有一个例外,你不应该获得上传文件的URL,也没有其他可能访问文件。

上传效果很好,但我想知道它是否冒犯了生产中的一些安全策略。特别是因为我缺少这个MEDIA_URL。

代码:

settings.py

MEDIA_ROOT = '/var/www/project/media/'
MEDIA_URL = '/media/'

models.py

class File(models.Model):
    myfile = models.FileField(upload_to='%Y/%m/%d/%H/%M/%S')

forms.py

class FileForm(forms.Form):
    myfile = forms.FileField()

urls.py

urlpatterns = patterns('',
    url(r'^$', views.upload),
)

views.py

def upload(request):
    if request.method == 'POST':
        form = FileForm(request.POST, request.FILES)
        if form.is_valid():
            newdoc = File(myfile = request.FILES['myfile'])
            newdoc.save()

            return render(request, 'project/index.html', {'form': form})
    else:
        form = FileForm()

        return render(request, 'project/index.html', {'form': form})

1 个答案:

答案 0 :(得分:1)

检查文件大小怎么样?攻击者可能会尝试上传一些巨大的文件,直到服务器的磁盘已满。