it-swarm.com.de

Warum sollte ich zusätzlich zu HTTPS HTTP anbieten?

Ich richte einen neuen Webserver ein. Zusätzlich zu TLS/HTTPS erwäge ich die Implementierung von Strict-Transport-Security und anderen HTTPS-Durchsetzungsmechanismen.

Diese scheinen alle auf der Annahme zu beruhen, dass ich http://www.example.com zusätzlich zu https://www.example.com. Warum serviere ich nicht einfach nur HTTPS? Gibt es einen sicherheitsrelevanten Grund, HTTP bereitzustellen - könnte beispielsweise jemand http://www.example.com wenn ich HSTS nicht einrichte?

110
david.libremone

Warum diene ich nicht einfach nur https?

Die Hauptgründe sind das Standardverhalten der Browser und Abwärtskompatibilität.

Standardverhalten

Wenn ein Endbenutzer (d. H. Ohne Kenntnisse über Protokolle oder Sicherheit) die Website-Adresse in seinen Browser eingibt, verwendet der Browser standardmäßig HTTP. Weitere Informationen darüber, warum Browser dieses Verhalten wählen, finden Sie unter diese Frage .

Daher ist es wahrscheinlich, dass Benutzer nicht auf Ihre Website zugreifen können.

Rückwärtskompatibilität

Es ist möglich, dass einige Benutzer mit alten Systemen und alten Browsern HTTPS nicht unterstützen oder eher keine aktuelle Datenbank mit Stammzertifikate haben oder einige Protokolle nicht unterstützen.

In diesem Fall können sie entweder nicht auf die Website zugreifen oder erhalten eine Sicherheitswarnung. Sie müssen definieren, ob die Sicherheit Ihrer Endbenutzer wichtig genug ist, um HTTPS zu erzwingen.

Viele Websites hören immer noch HTTP, leiten jedoch automatisch zu HTTPS um und ignorieren Benutzer mit wirklich alten Browsern.

könnte jemand http://www.example.com fälschen, wenn ich HSTS nicht einrichte?

Wenn ein Angreifer http://www.example.com muss es die Kontrolle über die Domäne oder auf irgendeine Weise die Kontrolle über die IP-Adresse übernehmen.

Ich nehme an, Sie meinten: Könnte ein Angreifer einen Man-in-the-Middle-Angriff ausführen?

In diesem Fall ja, aber auch mit oder ohne HSTS:

  • Ohne HSTS : Ein Angreifer kann sich leicht in der Mitte Ihres Servers und des Benutzers befinden und aktiv (dh den Inhalt ändern) oder passiv (dh) sein , lauschen)

  • Mit HSTS : Wenn ein Benutzer zum ersten Mal versucht, die Site über HTTP zu besuchen, kann ein Angreifer den Benutzer zur Verwendung von HTTP zwingen. Der Angreifer hat jedoch ein begrenztes Zeitfenster, in dem er seinen Angriff ausführen kann.

Was du machen solltest?

Wie bei vielen Websites sollten Sie HTTP-Verbindungen zulassen und Ihren Server dazu bringen, den Benutzer zur HTTPS-Version umzuleiten. Auf diese Weise überschreiben Sie das Standardverhalten von Browsern und stellen sicher, dass Ihre Benutzer die HTTPS-Version verwenden.

Alte Systeme ohne die richtigen Protokolle oder Stammzertifikate können nicht auf die Site zugreifen (oder haben zumindest eine Warnung), aber abhängig von Ihrer Benutzerbasis sollte dies kein Problem sein.

Fazit

Es wird mehr schaden als nützen, HTTP zu deaktivieren. Es bietet nicht wirklich mehr Sicherheit.

Jede zum Schutz einer Ressource hinzugefügte Sicherheit ist nutzlos, wenn die meisten Benutzer nicht darauf zugreifen können. Wenn Ihre Endbenutzer nicht auf Ihre Website zugreifen können, weil ihr Browser standardmäßig HTTP verwendet und Sie nicht auf HTTP-Verbindungen warten, was ist der Vorteil?

Führen Sie einfach die HTTP 301-Umleitung zur HTTPS-Version durch.

Verwandte Fragen

69
Ronny

Aus Gründen der Benutzerfreundlichkeit müssen Sie eine Umleitung zu HTTPS von allen HTTP-URLs anbieten: s. Ansonsten erstmalige Besucher, die einfach example.com/some/page in der URL-Leiste des Browsers wird von einem Verbindungsfehler begrüßt.

Durch das Bereitstellen der Weiterleitung werden Sie nicht anfälliger. Benutzer, die Ihren HSTS-Eintrag nicht in ihrem Browser haben, stellen ohnehin eine HTTP-Anfrage. Ob es einen echten Dienst auf HTTP gibt oder nicht, ist für einen Mann in der Mitte irrelevant.

Sie müssen also einen HTTP-Server ausführen, der jedoch nur mit den Weiterleitungen antworten muss.

161
Anders

Die Antworten sind sehr gut. Sie werden die Benutzerfreundlichkeit opfern, ohne die Sicherheit wesentlich zu beeinträchtigen, wenn Sie HTTP vollständig ausschalten.

Sie können dies jedoch mit der Option HSTS Preload abmildern. Das Vorladen Ihrer Website bedeutet, dass Sie Ihre Domain bei den Browser-Anbietern registrieren und diese ihre Browser hart codieren, um Ihre Website nur über HTTPS zu besuchen. Das heißt, wenn ein Benutzer versucht, über HTTP auf Ihre Website zuzugreifen, ändert der Browser die Anforderung in HTTPS. Der Benutzer muss nicht zuerst den HSTS-Header abrufen, bevor er sicher ist. Sie werden immer über einen sicheren Kanal mit Ihnen verbunden.

Dies schützt jetzt nicht Benutzer, die Browser verwenden, die ihre Liste der Nur-HTTPS-Websites nicht aktualisiert haben. Selbst beim Vorladen empfehle ich, HTTP für die wenigen Personen, die alte oder nicht aktualisierte Browser verwenden, nicht auszuschalten.

Aber Vorsicht, das Vorladen ist permanent! Es ist äußerst schwierig, von der Preload-Liste zu verschwinden.

So gelangen Sie in die Preload-Liste: https://hstspreload.org/

20
Taul

Das musst du nicht.

Einige ältere Browser und Betriebssysteme (diese gehen normalerweise Hand in Hand) verfügen nicht über neuere Zertifikatsstammberechtigungen, unterstützen jedoch normalerweise auch keine neueren HTTPS-Standards, sodass nichts wirklich verloren geht.

Möglicherweise haben Sie ein Gerät, das HTTPS, benutzerdefinierte Skripte usw. nicht unterstützt.

Niemand kann HTTP fälschen, da der DNS-Eintrag Ihnen gehört und der A-Eintrag auf Ihre spezifische IP-Adresse verweist (in einer perfekten Welt).

Sie tun dies nur, um die Kompatibilität aufrechtzuerhalten.

5
Root

Sie sollten HTTP nur unterstützen, um die Abwärtskompatibilität zu unterstützen. Stellen Sie sicher, dass Sie auf dem Back-End-Server eine ordnungsgemäße Umleitung zu HTTPS durchführen. Der beste Weg, dies zu implementieren, besteht darin, die HTTP-Unterstützung nur für Ihre Homepage oder für Seiten bereitzustellen, die keine vertraulichen Informationen enthalten. Sie dürfen HTTP-Anforderungen für Seiten, auf die der Benutzer nach der Authentifizierung zugreifen kann, nicht unterstützen.

Selbst wenn Geräte (IoT) auf die vertraulichen Daten Ihres Servers zugreifen, müssen Sie diese zur Verwendung von TLS zwingen (viele aktuelle Geräte können Ihr Zertifikat speichern und eine TLS-Verbindung herstellen). Beachten Sie, dass die SSL-Versionen vor 3.0 viele Schwachstellen wie Poodlebug usw. aufweisen. Deaktivieren Sie daher alle vorherigen Versionen von Ihrem Webserver und lassen Sie nur> TLS 1.1 zu.

Es ist gut, dass Sie das HSTS implementieren. Ich empfehle Ihnen, einen Blick auf die Machbarkeit der Implementierung von HPKP auf Ihrer Website zu werfen.

3
user3496510

Ich benutze http zusätzlich zu https für zwei Zwecke:

  1. Führen Sie die http-Weiterleitung zur https-Website durch. Dies ist der Fall, wenn jemand den Namen Ihrer Site in den Browser eingibt.
  2. Ich erstelle eine separate Website für http, wenn jemand versucht, auf die Website zuzugreifen, ohne den Namen dot com zu verwenden. (Ein echter Benutzer wird dies nicht tun.) Auf dieser Website wird eine einfache Meldung "In Kürze" angezeigt. Außerdem wird ihre IP-Adresse an die Verweigerungsliste für IP-Tabellen angehängt, um diese IP dauerhaft vom Server zu sperren. Diese stoppt verlangsamt Hacker, die masscan verwenden. (Ich habe Masscan gefunden, indem ich die Benutzeragentenzeichenfolgen aller IPs gespeichert habe, die ich blockiert habe, um einem anderen Programmierer zu beweisen, dass es sich nicht um Google-Scannen handelt, sondern um ausländische Hacker, die das IP-Scannen durchführen und nach Webservern suchen, um zu versuchen, sie zu hacken.).
0
Russell Hankins