Cookie/sichere Cookies

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Wenn Sie bei einem Nutzer Ihrer Webseite Daten speichern wollen, die auch in den nächsten Sessions abgerufen werden können, setzen Sie einen Cookie. Dessen Inhalt wird über einen HTTP-Request abgerufen, der Daten in einfachem Text übermittelt und deshalb einem Man-in-the-Middle-Angriff ausgesetzt sein kann.

Unter sicheren Cookies (secure cookies) versteht man Cookies, die gegen solche und XSS-Angriffe gesichert sind.

Verschlüsselung mit HTTPS

Mit HTTPS werden Ihre Daten verschlüsselt übertragen. Trotzdem könnte ein Man-in-the-Middle-Angriff Daten auf dem Weg zur sicheren Webseite abfangen und zu einer unverschlüsselten HTTP-Version umleiten, wo der Cookie dann ausgelesen wird.

Empfehlung: Vermeiden Sie Mixed Content, das heißt Ressourcen Ihrer Webseite, die noch unverschlüsselt mit HTTP übertragen werden.

HttpOnly

Cookies können im Falle eines XSS-Angriffes auch durch JavaScript ausgelesen werden.[1][2][3]

Durch das Setzen eines httpOnly-Flags können Sie verhindern, dass Cookies durch Scripte ausgelesen werden.

Set-Cookie: CookieName=Wert; path=/; HttpOnly

Die httpOnly-Eigenschaft ist normalerweise als false gesetzt und muss von Ihnen auf true gesetzt werden.

durch das Setzen eines secure-Flags können Sie erreichen, dass der Cookie nur über sichere HTTPS-Verbindungen gesendet wird.

Set-Cookie: CookieName=Wert; path=/; HttpOnly; secure

Pfadangabe

Ein Cookie mit dieser Pfadangabe steht allen Requests zur Verfügung.

Set-Cookie: CookieName=Wert; path=/; HttpOnly; secure

Durch das Präzisieren der Pfadangabe können Sie einschränken, wer darauf Zugriff hat:

Set-Cookie: CookieName=Wert; path=www.example.com/; HttpOnly; secure

Mit dieser Angabe z. B. werden Subdomains ausgeschlossen.

Fazit

Sie können durch das Setzen auf sichere HTTPS-Verbindungen, das Setzen von flags und genaue Pfadangaben das Risiko von Angriffen minimieren. Eine Alternative ist das Speichern von Informationen mit Web Storage API.

Empfehlung: Verwenden Sie Cookies nur dann, wenn Sie diese tatsächlich für eine serverseitige Programmierung benötigen. Die bessere Alternative liefert die Verwendung von localstorage oder sessionstorage der Web Storage API. Diese Methoden bieten mehrere Vorteile:
  • die Daten bleiben auf dem Client-Rechner, belasten also nicht die Übertragungsleistung
  • die speicherbare Datenmenge ist wesentlich größer
  • die Daten sind als Schlüssel-Wert-Paare strukturiert
  • es gibt kein Ablaufdatum

Quellen

  1. CodingHorror: Protecting Your Cookies: HttpOnly
  2. Troy Hunt: C is for cookie, H is for hacker – understanding HTTP only and Secure cookies
  3. infosecinstitute: Securing Cookies with HttpOnly and secure Flags

Weblinks