[英]Django: information leakage problem when using @login_required and setting LOGIN_URL
當使用@login_required裝飾器並設置LOGIN_URL變量時,我發現了一種信息泄漏。
我有一個網站,要求所有內容的強制登錄。 問題是,當它是現有頁面時,您將被重定向到登錄頁面,並設置下一個變量。
所以當沒有登錄並要求:
http://localhost:8000/validurl/
你看到了這個:
http://localhost:8000/login/?next=/validurl/
在請求不存在的頁面時:
http://localhost:8000/faultyurl/
你看到了這個:
http://localhost:8000/login/
這揭示了一些我不想要的信息。 我想過覆蓋login方法,強制下一個為空並在這個子類方法上調用'super'。
另一個問題是我的一些測試在沒有設置LOGIN_URL的情況下失敗。 他們重定向到'/ accounts / login /'而不是'/ login /'。 因此,為什么我想使用LOGIN_URL但禁用'自動下一個'功能。
誰可以對這個問題有所了解?
非常感謝。
傑拉德。
您可以將此行包含在urls.py
文件中的最后一個模式中。 它會將與任何其他模式不匹配的URL重新路由到登錄頁面。
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),
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.