我正在尝试保护某些文件免受外部用户的侵害。在阅读了许多此处的帖子和问题之后,我想出了一个不需要调整服务器设置的解决方案,并且该解决方案符合我的技术理解水平。但是经过所有的研究,我的解决方案似乎太简单了。所以,我想来这里看看这是否有意义,是否有些安全,以及我遗漏了哪些漏洞。
在此示例中,我将关注的文件上传到媒体目录中名为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使用)。