Django:保护某些媒体免受未经身份验证的用户的侵害

时间:2018-10-19 18:32:04

标签: django security django-urls

我正在尝试保护某些文件免受外部用户的侵害。在阅读了许多此处的帖子和问题之后,我想出了一个不需要调整服务器设置的解决方案,并且该解决方案符合我的技术理解水平。但是经过所有的研究,我的解决方案似乎太简单了。所以,我想来这里看看这是否有意义,是否有些安全,以及我遗漏了哪些漏洞。

在此示例中,我将关注的文件上传到媒体目录中名为protected的文件夹中。

这是我的urls.py文件:

import re
from . import views
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.auth.decorators import login_required
from django.shortcuts import HttpResponseRedirect
from django.urls import path
from django.views.static import serve
from django.contrib.auth import views as auth_views

@login_required
def serve_protected_media(request, path, document_root=None, show_indexes=False):
    return serve(request, path, document_root, show_indexes)

def protected_serve(request, path, document_root=None, show_indexes=False):
    if re.match(r'^protected', path):
        return serve_protected_media(request, path, document_root, show_indexes)
    else:            
        return serve(request, path, document_root, show_indexes)

urlpatterns = [
    path('', views.index, name='site_index'),
    path('admin/', admin.site.urls),
    path('hr/', include('hr.urls')),
    path('accounts/login/', auth_views.login, name='login'),
    path('accounts/logout/', auth_views.logout, name='logout', kwargs={'next_page': '/'}),
] + static(settings.MEDIA_URL, protected_serve, document_root=settings.MEDIA_ROOT)

它通过一些测试对我有用,但是我的总体问题是:这是一种保护某些文件免受登录用户之外的访问的好的方法吗?

编辑:此外,由于受关注的文件不是很大,因此我目前对Django提供的文件不是很担心,并且该应用程序无需扩展(仅内部HR使用)。

0 个答案:

没有答案
相关问题