Zusammenfassung der Diskussion zur Gültigkeitsdauer von Nginx-Cookies

Zusammenfassung der Diskussion zur Gültigkeitsdauer von Nginx-Cookies

Bei jedem Besuch wird im Browser Cookie generiert. Ist die Existenz von Cookie also gut oder schlecht für die Benutzer? Ehrlich gesagt bringt die Existenz dieses Dings eine Reihe von Problemen mit sich. Das Interessante ist, dass es auf fast jeder Site schwierig ist, Cookie zu verlassen. Die Verwendung von Cookie wird aufgrund ihres scheinbar einfachen Erscheinungsbilds leicht unterschätzt. Ich habe kürzlich während des Entwicklungsprozesses den Cookie -Code in der Anwendung überprüft und festgestellt, dass man mit nur einem geringen Aufwand enorme Sicherheitsvorteile erzielen kann. Schreiben Sie diese Notiz, um Ihr Gedächtnis zu vertiefen.

Sicherheitsrisiken von Cookies

In tatsächlichen Anwendungsszenarien wird Cookie am häufigsten dazu verwendet, den Serverstatus der Identitätsauthentifizierung aufrechtzuerhalten. Diese Speicherung kann Session oder dauerhaft sein. Unabhängig davon, um welches es sich handelt: Sobald das im Authentifizierungs Cookie enthaltene Ticket durchgesickert ist, kann der Server nur noch schwer unterscheiden, ob die Benutzeranforderung mit diesem Ticket von einem echten Benutzer oder einem böswilligen Angreifer stammt.

In der Praxis ist die häufigste Ursache für Cookie Lecks die Nutzung von Cross-Site-Scripting-Schwachstellen (z. B. XSS oder Cross-Site-Scripting). Ein Angreifer kann über einen kleinen JavaScript -Code wichtige Cookie Kennungen stehlen, die die Identität des Benutzers darstellen. Da Cross-Site-Scripting-Schwachstellen so häufig sind (glauben Sie nicht, dass sich Cross-Site-Scripting durch einfache HTML Encode vermeiden lässt; Cross-Site-Scripting ist ein sehr tiefgründiges Thema, so sehr, dass in der Branche dafür ein spezieller Begriff abgeleitet wurde: Cross-Site-Scripting), kann es fast keine Website vermeiden, daher ist diese Methode in der Praxis ein häufig verwendetes Mittel .

Tatsächlich besteht das erste Geheimnis zur Vermeidung dieses Problems darin, alles Mögliche zu tun, um Ihre Cookie mit HttpOnly zu kennzeichnen. Die spezifische Verwendung von HttpOnly geht über den Rahmen dieses Artikels hinaus.

Wie Cookies funktionieren

Wenn Sie eine Website zum ersten Mal besuchen, sendet der Browser eine Anfrage. Nachdem der Server auf die Anfrage geantwortet hat, fügt er Cookie in die Antwortanfrage ein. Wenn der Browser eine zweite Anfrage sendet, überträgt er Cookie . Der Server identifiziert den Benutzer. Natürlich kann der Server auch Cookie Inhalt ändern.

Cookie-Lebenszyklus

Beim Anlegen Cookie wird Cookie ein Wert zugewiesen: Expire , der die Gültigkeitsdauer Cookie angibt, also den Lebenszyklus Cookie . Wird der eingestellte Lebenszyklus überschritten, wird Cookie gelöscht. Wenn Sie den Expire auf 0 oder einen negativen Wert setzen, wird das Cookie beim Schließen des Browsers gelöscht. Dies ist ein sichererer Ansatz.

Gültigkeitsdauer von Cookies ändern

Normalerweise werden unsere web über nginx veröffentlicht. Derzeit können wir die Gültigkeitsdauer cookie ändern, indem wir die Konfigurationsdatei auf nginx ändern. Da der Autor kürzlich Funktionen für nginx entwickelt hat, die auf openresty basieren. Dies ist eine gute Gelegenheit, die Gültigkeitsdauer von Cookie zu testen.

Wie oben im Lebenszyklus von Cookie erwähnt, können wir, um die Sicherheit der Gültigkeitsdauer zu gewährleisten, eine angemessene Gültigkeitsdauer für Cookie festlegen. Was ist die Auswirkung, wenn der Wert 0 oder negativ ist? Schauen Sie es sich an

Änderungsideen

Verwenden Sie resty.cookie von Openresty , um es zu ändern. Diese Bibliothek wird zum Betreiben von HTTP cookie auf OpenResty verwendet. Kann verwendet werden, um HTTP Cookie header für Nginx zu analysieren und jedes Feld im Cookie zurückzugeben. Legen Sie beispielsweise name , value , httponly und andere Attribute fest.

Gültig für 24 Stunden

Hier wird für expires eine Gültigkeitsdauer von einem Tag (24h) eingestellt, also der aktuellen Systemzeit (ngx.time()) plus 24 Stunden.

 lokales Cookie = resty_cookie:neu()

 lokal ok, err = cookie:set({
  Schlüssel = "mittlere Sitzung",
  Wert = Sitzung,
  Pfad = "/",
  sicher = falsch,
  httponly = wahr,
  läuft ab = ngx.cookie_time(ngx.time() + 60 * 60 * 24),
  Domäne = ngx.host,
 })

Wirkung

Hier können Sie sehen, dass die Gültigkeitsdauer unseres cookie der 13. Mai um 14:04 Uhr ist. Dies bedeutet, dass unsere geänderte Konfiguration wirksam ist und wir Cookie über diesen Parameter ändern können. Sobald dieser Zeitpunkt erreicht ist, wird das Cookie ungültig und der Benutzer muss sich erneut anmelden.

Gültig für Genesis

Hier wird expires auf -1 gesetzt. Man kann beobachten, dass das Cookie im Jahr 1970 verwendet wird, also in der Metazeit der UNIX-Ära.

 lokales Cookie = resty_cookie:neu()

 lokal ok, err = cookie:set({
  Schlüssel = "mittlere Sitzung",
  Wert = Sitzung,
  Pfad = "/",
  sicher = falsch,
  httponly = wahr,
  läuft ab = ngx.cookie_time(-1),
  Domäne = ngx.host,
 })

Aus der folgenden Abbildung können Sie ersehen, dass Cookie bis zum 1. Januar 1970 gültig ist, was zu diesem Zeitpunkt zweifellos veraltet ist. Dies ist natürlich die Konfiguration in der Produktionsumgebung. Sie werden in einem kleinen dunklen Raum eingesperrt, um über den Wert des Lebens zu diskutieren. Benutzer können sich auf keinen Fall erfolgreich anmelden, wenn sie auf eine solche Cookie -Konfiguration stoßen.

Gültig bis aktuell

Da ngx.cookie_time eine formatierte Zeichenfolge zurückgibt, die als Ablaufzeit Cookie verwendet werden kann, geben wir die Ablaufzeit selbst manuell an. Mit dieser Methode kann die Wirkung der oben erwähnten automatischen Cookie -Löschung getestet werden.

Geben Sie eine Ablaufzeit von -1 an

 lokales Cookie = resty_cookie:neu()

 lokal ok, err = cookie:set({
  Schlüssel = "mittlere Sitzung",
  Wert = Sitzung,
  Pfad = "/",
  sicher = falsch,
  httponly = wahr,
  läuft ab = -1,
  Domäne = ngx.host,
 })

Geben Sie eine Ablaufzeit von 0 an

 lokales Cookie = resty_cookie:neu()

 lokal ok, err = cookie:set({
  Schlüssel = "mittlere Sitzung",
  Wert = Sitzung,
  Pfad = "/",
  sicher = falsch,
  httponly = wahr,
  läuft ab = 0,
  Domäne = ngx.host,
 }) 

abschließend

Die Konfiguration -1 und 0 entspricht hier in der Praxis der Konfiguration der Metazeit, hat jedoch den Vorteil, dass Sie sich nicht in einem dunklen Raum einschließen müssen. Cookie ist nur auf der aktuellen Seite gültig. Sobald der Browser geschlossen wird, wird das Cookie vom Browser gelöscht. Zu diesem Zeitpunkt besteht kein Grund zur Sorge hinsichtlich der Sicherheit.

Referenzdokumente:

Vortrag zur Cookie-Sicherheithttps://www.infoq.cn/article/cookie-security

Lassen Sie uns klar über Cookies sprechen https://juejin.im/post/59d1f59bf265da06700b0934

Eine kurze Diskussion zur Cookie-Sicherheit https://zhuanlan.zhihu.com/p/58666986

Damit ist dieser Artikel mit der Diskussionszusammenfassung zur Gültigkeitsdauer von Nginx-Cookies abgeschlossen. Weitere relevante Inhalte zur Gültigkeitsdauer von Nginx-Cookies finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass alle 123WORDPRESS.COM in Zukunft unterstützen werden!

Das könnte Sie auch interessieren:
  • So verwenden Sie Nginx, um den domänenübergreifenden Zugriff auf Cookies zu lösen
  • Informationen zum Hinzufügen von Cookie-Informationen zum Nginx-Protokoll

<<:  Natives JS realisiert zusammengesetzte Bewegungen verschiedener Bewegungen

>>:  Native JS realisiert einheitliche Bewegungen verschiedener Sportarten

Artikel empfehlen

JavaScript zum Anzeigen und Ausblenden des Dropdown-Menüs

In diesem Artikel wird der spezifische Code für J...

Informationen zur Installationsmethode für MySQL 8.0.13-ZIP-Pakete

MySQL 8.0.13 verfügt standardmäßig über einen Dat...

Erfahren Sie mehr über MySQL-Datenbanken

Inhaltsverzeichnis 1. Was ist eine Datenbank? 2. ...

Das mobile Vue-Terminal realisiert den Finger-Gleiteffekt

In diesem Artikelbeispiel wird der spezifische Co...

Nginx-Server fügt benutzerdefinierte Systemd-Dienstprozessanalyse hinzu

1. Nehmen Sie nginx als Beispiel Nginx mit dem Be...

Beispiel für die Erstellung eines XML-Online-Editors mit js

Inhaltsverzeichnis Vorwort Die Notwendigkeit von ...

So verhindern Sie, dass Flash HTML-Div-Elemente abdeckt

Als ich heute einen Flash-Werbecode schrieb, habe ...

Häufig verwendete JS-Funktionsmethoden im Frontend

Inhaltsverzeichnis 1. E-Mail 2. Mobiltelefonnumme...