security - So leiten Sie alle HTTP-Anfragen an HTTPS weiter



9 Answers

Die Apache-Dokumente empfehlen, eine Neuschreibung zu verwenden:

https Sie die folgenden https , um http URLs zu https umzuleiten:

<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com
    # ... SSL configuration goes here
</VirtualHost>

Dieses Snippet sollte in die Hauptserverkonfigurationsdatei und nicht in .htaccess wie in der Frage gefragt, gehen.

Dieser Artikel ist möglicherweise erst erschienen, nachdem die Frage gestellt und beantwortet wurde, scheint aber der aktuelle Weg zu sein.

security http .htaccess redirect https

Ich versuche, alle unsicheren HTTP-Anfragen auf meiner Website (zB http://www.example.com ) an HTTPS ( https://www.example.com ) umzuleiten. Ich benutze PHP BTW. Kann ich dies in .htaccess tun?




Wie ich in dieser Frage gesagt habe , würde ich vorschlagen, dass Sie vermeiden, dass alle HTTP-Anfragen blind an ihr HTTPS-Äquivalent weitergeleitet werden, da dies möglicherweise einen falschen Eindruck von Sicherheit verursacht. Stattdessen sollten Sie den "root" Ihrer HTTP-Site wahrscheinlich zum Stamm Ihrer HTTPS-Site umleiten und von dort nur zu HTTPS verlinken.

Das Problem besteht darin, dass, wenn ein Link oder ein Formular auf der HTTPS-Site den Client dazu veranlasst, eine Anforderung an die HTTP-Site zu senden, dessen Inhalt vor der Umleitung sichtbar ist.

Wenn zum Beispiel eine Ihrer über HTTPS versorgten Seiten ein Formular mit der Form <form action="http://example.com/doSomething"> und einige Daten sendet, die nicht gesendet werden sollen, sendet der Browser zuerst die vollständige Anfrage (einschließlich Entität, wenn es sich um einen POST handelt) an die HTTP-Site zuerst. Die Umleitung wird sofort an den Browser gesendet, und da eine große Anzahl von Benutzern die Warnungen deaktiviert oder ignoriert, wird sie wahrscheinlich ignoriert.

Natürlich kann der Fehler, die Links zur HTTPS-Site bereitzustellen, die für die HTTP-Site bestimmt sind, zu Problemen führen, sobald Sie etwas auf dem HTTP-Port an derselben IP-Adresse wie Ihre HTTPS-Site abhören. Ich denke jedoch, dass das Beibehalten der beiden Seiten als "Spiegel" nur die Wahrscheinlichkeit erhöht, Fehler zu machen, da Sie wahrscheinlich die Annahme machen, dass es sich automatisch korrigiert, indem es den Benutzer zu HTTPS umleitet, während es oft zu spät ist. (Es gab ähnliche Diskussionen in dieser Frage. )




Ich mag diese Methode der Umleitung von http zu https. Weil ich es nicht für jede Seite bearbeiten muss.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]



Wenn Sie den folgenden Code in Ihrer .htaccess-Datei verwenden, werden Besucher automatisch zur HTTPS-Version Ihrer Site weitergeleitet:

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Wenn Sie eine vorhandene .htaccess-Datei haben:

Dupliziere RewriteEngine On nicht.

Stellen Sie sicher, dass die Zeilen, die RewriteCond und RewriteRule beginnen, sofort der bereits vorhandenen RewriteEngine On folgen.




Dies ist die richtige Methode zum Umleiten von HTTP zu HTTPS mit. Htaccess nach GoDaddy.com. Die erste Codezeile ist selbsterklärend. Die zweite Codezeile prüft, ob HTTPS deaktiviert ist, und wenn dies der Fall ist, leitet sie HTTP zu HTTPS um, indem sie die dritte Codezeile ausführt, andernfalls wird die dritte Codezeile ignoriert.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

https://www.godaddy.com/help/redirect-http-to-https-automatically-8828




Tun Sie alles, was oben für die Umleitung erklärt wurde. Fügen Sie einfach "HTTP Strict Transport Security" zu Ihrer Kopfzeile hinzu. Dies wird den Menschen im mittleren Angriff vermeiden.

Bearbeiten Sie Ihre Apache-Konfigurationsdatei (zum Beispiel /etc/apache2/sites-enabled/website.conf und /etc/apache2/httpd.conf) und fügen Sie Ihrem VirtualHost folgendes hinzu:

# Optionally load the headers module:
LoadModule headers_module modules/mod_headers.so

<VirtualHost 67.89.123.45:443>
    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
</VirtualHost>

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security




Um alle http Anfragen an https umzuleiten, können Sie Folgendes verwenden:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

Wenn das Mod-Rewrite nicht aktiviert ist und Sie sich auf Apache 2.4 befinden, können Sie auch eine Redirect Anweisung verwenden, um http Anfragen an https umzuleiten.

Apache 2.4.

<if "%{HTTPS} !~ /on/">
Redirect / https://www.example.com/
</if>






Wenn Sie in einer Situation sind, in der Sie nicht direkt auf die Apache-Konfiguration für Ihre Site zugreifen können, die viele gehostete Plattformen auf diese Weise noch eingeschränkt sind, würde ich tatsächlich einen zweistufigen Ansatz empfehlen. Der Grund, warum Apache selbst dokumentiert, dass Sie ihre Konfigurationsoptionen in erster Linie über die Mod_rewrite für HTTP zu HTTPS verwenden sollten.

Zuerst, wie oben erwähnt, würden Sie Ihre .htaccess mod_rewrite Regel (en) einrichten:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Dann, in Ihren PHP-Dateien (Sie müssen dies tun, wo immer es für Ihre Situation angemessen wäre, einige Seiten werden alle Anfragen über eine einzige PHP-Datei trichterieren, andere bedienen verschiedene Seiten je nach ihren Bedürfnissen und der Anfrage ):

<?php if ($_SERVER['HTTPS'] != 'on') { exit(1); } ?>

Das oben Genannte muss VOR jedem Code ausgeführt werden, der möglicherweise sichere Daten in einer ungesicherten Umgebung verfügbar macht. Daher verwendet Ihre Site die automatische Umleitung über HTACCESS und mod_rewrite, während Ihre Skripts sicherstellen, dass keine Ausgabe bereitgestellt wird, wenn nicht über HTTPS zugegriffen wird.

Ich denke, die meisten Leute denken nicht so, und daher empfiehlt Apache, dass Sie diese Methode nicht verwenden, wo es möglich ist. Es erfordert jedoch nur eine zusätzliche Überprüfung des Entwicklungsendes, um sicherzustellen, dass die Daten Ihres Benutzers sicher sind. Hoffentlich hilft das jemand anderem, der aufgrund von Einschränkungen unserer Hosting-Services nach nicht empfohlenen Methoden suchen muss.






Related