Setarea corectă a cookie-urilor pentru a evita atacurile

Cookie-urile sunt fișiere mici de text pe care le stochează browserul și pe care le trimite înapoi către serverul web cu fiecare cerere ulterioară. Acestea pot fi utilizate pentru a stoca informații despre sesiune, preferințe sau alte date despre utilizator.

Pentru a proteja utilizatorii și datele lor, cookie-urile pot fi marcate cu anumite "flag-uri" sau semnalmente, care indică browserului cum să le trateze și să le utilizeze. Iată câteva exemple de flag-uri importante pentru securitatea cookie-urilor:

HTTP Only: Acest flag indică faptul că cookie-ul nu poate fi accesat prin JavaScript. Acest lucru previne atacurile de tip Cross-Site Scripting (XSS), prin care un atacator poate încerca să preia controlul asupra unui cont de utilizator prin injectarea de cod JavaScript într-un site.

Secure: Acest flag indică faptul că cookie-ul poate fi trimis numai prin conexiuni HTTPS criptate. Acest lucru previne atacurile de tip man-in-the-middle (MITM), prin care un atacator interceptează și citește sau modifică traficul între browser și server.

SameSite: Acest flag indică faptul că cookie-ul poate fi trimis doar către același site care l-a setat inițial. Acest lucru previne atacurile de tip Cross-Site Request Forgery (CSRF), prin care un atacator poate trimite cereri neautorizate de la browserul unui utilizator către un alt site, în numele utilizatorului.

Toate aceste flag-uri sunt importante pentru a proteja utilizatorii și datele lor împotriva diferitelor tipuri de atacuri. În plus, dezvoltatorii de aplicații web ar trebui să aibă grijă să utilizeze cookie-uri numai atunci când sunt necesare și să limiteze cantitatea și durata de timp în care acestea sunt stocate. Prin utilizarea adecvată a cookie-urilor și a flag-urilor lor de securitate, dezvoltatorii pot ajuta la asigurarea securității și confidențialității datelor utilizatorilor lor.

Remediere:

Apache2
  1. Adăugați în fișierul de configurare Apache2 următoarea linie:
    Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  2. Restartați serverul web

Nginx
  1. Ne asigurăm că avem instalat modulul "nginx_cookie_flag_module" / --add-module=/path/to/nginx_cookie_flag_module
  2. Adăugați în fișierul de configurare Nginx următoarea linie:
    set_cookie_flag secure;
    sintaxa este: set_cookie_flag [HttpOnly] [secure] [SameSite|SameSite=[Lax|Strict]];
  3. Restartați serverul web
Exemple:
location / {
set_cookie_flag Secret HttpOnly secure SameSite;
set_cookie_flag * HttpOnly;
set_cookie_flag SessionID SameSite=Lax secure;
set_cookie_flag SiteToken SameSite=Strict;
}


PHP
Cookie-urile pot fi setate cu aceste flag-uri direct din codul cu care sunt generate.
În cazul în care aplicația este scrisă în PHP, codul următor poate fi adăugat înainte de a fi deschisă sesiunea și de a fi setate headerele, pentru ca toate cookie-urile să se genereze automat cu aceste flag-uri:

session_set_cookie_params(["SameSite" => "Strict"]); // valori posibile: none, lax, strict
session_set_cookie_params(["Secure" => "true"]); // valori posibile: false, true
session_set_cookie_params(["HttpOnly" => "true"]); // valori posibile: false, true


Tot în PHP, funcția "setcookie()" cu care se generează cookie-urile accetă instrucțiuni pentru setarea acestor headere:
setcookie(
string $name,
string $value = "",
int $expires_or_options = 0,
string $path = "",
string $domain = "",
bool $secure = false,
bool $httponly = false
): bool

Referințe:

  • https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/06-Session_Management_Testing/02-Testing_for_Cookies_Attributes
  • https://www.php.net/manual/en/function.setcookie.php

    • cookieflag-uriflagssecurehttponlysame sitecybersecurity

Newsletter

Abonează-te la newsletter-ul nostru pentru a te informa despre noutățile din CyberSecurity. Te poți dezabona oricând.

Mai mult decât CyberSecurity

Oferim o varietate de servicii pentru a ajuta companiile să fie pregătite de confruntări cu atacuri cibernetice reale.

Contactează-ne