簡體   English   中英

Django:使用@login_required並設置LOGIN_URL時出現信息泄漏問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM