【问题标题】:Security issue with serving media files提供媒体文件的安全问题
【发布时间】:2014-09-05 19:44:44
【问题描述】:

说明

我有一个网站,每个人都可以上传文件。它就像一个共享主机,但除了您不应该获取已上传文件的 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})

【问题讨论】:

    标签: django


    【解决方案1】:

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

    【讨论】:

    • 我将根据上传者的 IP 地址(每小时限制)添加。谢谢:)
    猜你喜欢
    • 2012-06-15
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    相关资源
    最近更新 更多