gpt4 book ai didi

python - Django:使用@login_required 和设置LOGIN_URL 时的信息泄露问题

转载 作者:太空狗 更新时间:2023-10-29 19:26:04 29 4
gpt4 key购买 nike

我在使用 @login_required 装饰器并设置 LOGIN_URL 变量时发现了一种信息泄露的形式。

我有一个网站,所有内容都需要强制登录。问题是当它是一个现有页面时,您会被重定向到设置了下一个变量的登录页面。

所以当没有登录并要求:

 http://localhost:8000/validurl/

你看到这个:

 http://localhost:8000/login/?next=/validurl/

当请求一个不存在的页面时:

 http://localhost:8000/faultyurl/

你看到这个:

 http://localhost:8000/login/

这揭示了一些我不想要的信息。我想到了重写登录方法,强制 next 为空并在这个子类方法上调用“super”。

另一个问题是我的一些测试在没有设置 LOGIN_URL 的情况下会失败。他们重定向到“/accounts/login/”而不是“/login/”。因此,为什么我想使用 LOGIN_URL 但禁用“自动下一步”功能。

有人可以阐明这个主题吗?

非常感谢。

杰拉德。

最佳答案

您可以将此行作为最后一个模式包含在您的 urls.py 文件中。它会将与任何其他模式不匹配的网址重新路由到登录页面。

urlpatterns = patterns('',

...

(r'^(?P<path>.+)$', 'django.views.generic.simple.redirect_to', {
'url': '/login/?next=/%(path)s',
'permanent': False
}),
)

编辑:要继续向经过身份验证的用户提升 404 页面,请执行以下操作:

from django.http import Http404, HttpResponseRedirect
def fake_redirect(request, path):
if request.user.is_authenticated:
raise Http404()
else:
return HttpResponseRedirect('/login/?next=/%s' % path)

urlpatterns = patterns('',

...

(r'^(?P<path>.+)$', fake_redirect),
)

关于python - Django:使用@login_required 和设置LOGIN_URL 时的信息泄露问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042201/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com