Wie aktiviere ich https in Django-auth generierten Seiten?

8

Mit der Django-auth Anwendung (Django Version 1.3) möchte ich meinen Login haben Seite gehe zu https://mysite.com/login/ . Derzeit verwende ich:

%Vor%

was gut funktioniert, geht aber zu http://mysite.com/login/ .

Gibt es eine Möglichkeit, Django-auth mitzuteilen, welches Präfix (https) verwendet werden soll, wenn es den Namen der Ansicht umkehrt? Ich habe die gesamte Handbuchseite gelesen und nichts gefunden, was sie abdeckt. Oder vielleicht eine Möglichkeit, dem URL -Tag zu erklären, zu https zu wechseln?

Oder ist die einzige Option, um die gesamte URL manuell anzugeben? Ich hoffe nicht :) Und gegeben, wie mächtig Django bisher war, kann ich nicht glauben, dass es diese Fähigkeit nicht hätte - ich muss es übersehen. :)

    
John C 04.11.2011, 21:01
quelle

2 Antworten

10

Setzen Sie die Umgebungsvariable HTTPS des Betriebssystems auf

Sie müssen die Betriebssystemumgebungsvariable HTTPS auf 'on' aktivieren, damit django HTTPS vollständig generierten Links voranstellt (z. B. mit HttpRedirectRequest s). Wenn Sie mod_wsgi verwenden, können Sie die Zeile hinzufügen:

%Vor%

zu Ihrem wsgi-Skript . Sie können die Notwendigkeit dafür sehen, indem Sie django/http/__init__.py :

lesen %Vor%

Sichern Sie Ihre Cookies

Setzen Sie in settings.py die Zeilen

> %Vor%

und Cookies werden nur über HTTPS-Verbindungen gesendet. Außerdem möchten Sie wahrscheinlich auch SESSION_EXPIRE_AT_BROWSER_CLOSE=True . Hinweis: Wenn Sie ältere Versionen von Django (weniger als 1,4) verwenden, gibt es keine Einstellung für sichere CSRF-Cookies. Als schnelle Lösung können Sie einfach sicherstellen, dass CSRF-Cookies sicher sind, wenn das Sitzungscookie sicher ist ( SESSION_COOKIE_SECURE=True ), indem Sie django/middleware/csrf.py :

bearbeiten %Vor%

Direkte HTTP-Anfragen an HTTPS auf dem Webserver

Als Nächstes möchten Sie eine Neuschreibungsregel, die HTTP-Anfragen an https weiterleitet, z. B. in nginx

%Vor%

Djangos reverse -Funktions- und URL-Schablonentags geben nur relative Links zurück; Wenn Sie also auf einer https-Seite sind, werden Ihre Links Sie auf der https-Seite halten.

    
dr jimbob 19.05.2012, 23:26
quelle
1

Wie Sie in anderen StackOverflow-Fragen gesehen haben, könnten Sie Middleware implementieren leitet die Anmeldeseite automatisch auf eine sichere Version um.

Wenn Sie die Sicherheit wirklich ernst nehmen, sollten Sie die gesamte Website wahrscheinlich auf SSL migrieren. Aus der EFF So stellen Sie HTTPS korrekt bereit :

  

Sie müssen die gesamte Anwendungsdomäne über HTTPS bedienen. Umleiten von HTTP-Anfragen mit Antworten von HTTP 301 oder 302 auf die entsprechende HTTPS-Ressource.

     

Einige Websitebetreiber stellen nur die Anmeldeseite über HTTPS bereit, da nur das Passwort des Benutzers sensibel ist. Die Benutzer dieser Sites sind anfällig für passive und aktive Angriffe.

    
Martey 04.11.2011 21:29
quelle