Ich verwende Drupal 7. Die Anmeldeseite für meine Benutzer befindet sich unter / user / login, also der Standard-Anmeldepfad. Ich brauche diese Seite, um mit SSL verschlüsselt zu werden, damit die Leute ihre Passwörter nicht im Klartext übertragen.
Ich habe Apache so konfiguriert, dass die Site entweder über HTTP oder HTTPS navigiert werden kann. Ich möchte jedoch einige Umschreiberegeln implementieren, damit alle Anforderungen außer / user / login über HTTP gestellt werden, da dies UNENDLICH schneller ist und zu einer besseren Benutzererfahrung führt. Ich lehne es ab, Secure Pages zu diesem Zeitpunkt zu verwenden, da die Unterstützung in Drupal Core fehlerhaft ist, und ich werde Core nicht manuell patchen. Das heißt, ich muss nur noch Apache-Umschreiberegeln verwenden.
Ich habe folgende Regeln:
<VirtualHost *:80>
...
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/user/login$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [L,R]
...
</VirtualHost>
<VirtualHost *:443>
...
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/user/login$
RewriteRule ^/(.*) http://%{HTTP_HOST}/$1 [L,R]
...
</VirtualHost>
Für mich macht das Sinn, aber Drupal scheint es nicht zu mögen.
Was passiert ist wie folgt:
- Wenn ich mit HTTP zu einer anderen Seite als / user / login auf der Site navigiere, funktioniert dies einwandfrei.
- Wenn ich über HTTP zu / user / login navigiere, werde ich zur Startseite weitergeleitet.
- Wenn ich über HTTPS zu einer Seite navigiere, werde ich über HTTP zur Startseite weitergeleitet.
Antworten:
Sie brauchen / user / login nicht wirklich, um über https bedient zu werden. Sie müssen das Benutzeranmeldeformular über https senden.
Sie sollten sich das Modul Securepages_prevent_hijack ansehen - nicht, um es direkt zu verwenden, da es von Securepages abhängt, sondern um zu sehen, wie das Anmeldeformular geändert wird. Wie so:
Sie sollten auch herausfinden, ob das von Drupal für Sie gesetzte Cookie sicher ist oder nicht. Dies hängt von Ihren Einstellungen in der php.ini ab. Überprüfen Sie, ob Sie session.cookie_secure auf 1 gesetzt haben. Wenn ja, wird das Cookie nicht an Ihre http-Sitzungen gesendet, weshalb Sie möglicherweise wieder auf der Startseite enden (kein Sitzungscookie == no session = = keine Anmeldeinformationen == abmelden). Wenn die session.cookie_secure 0 ist, können andere Parteien möglicherweise Ihre Sitzungscookies während der Übertragung beobachten und sich als Ihre Benutzer tarnen. Vielleicht haben Sie dieses Risiko bereits in Betracht gezogen, aber es muss berücksichtigt werden.
quelle
securepages_url(...)
tut ...RewriteCond %{REQUEST_URI} !^/user/login$
das richtig funktioniert; Wenn diese Regel Teil des Anmeldeumleitungsprozesses ist, wird Ihr Kennwort im Klartext gesendet. Erfassen Sie einige Pakete mit Wireshark, um sicherzustellen, dass dies nicht geschieht. Dies kann Ihnen auch dabei helfen, herauszufinden, was mit Ihrem Sitzungscookie passiert. Ich weiß, dass ich Ihre Frage nicht beantwortet habe, aber hoffentlich können Sie damit den richtigen Weg einschlagen.Ich denke, das Secure Login- Modul wird auch tun, was Sie wollen, ohne dass Sie den Kern hacken müssen.
quelle
Ich denke, Sie können Secure Pages erneut versuchen , da seitdem die neue stabile Version veröffentlicht wurde.
Aktivieren Sie für Drupal 8 Folgendes: Sicheres Anmeldemodul .
Siehe auch: Aktivieren von HTTP Secure (HTTPS) .
quelle