Siguri
Koka Strict-Transport-Security (HSTS)
Koka që e detyron shfletuesin të përdorë vetëm HTTPS për një domain; mjeti kontrollon vetëm praninë e saj.
Çfarë është
HSTS i thotë shfletuesit: për këtë domain, përdor gjithnjë HTTPS, edhe nëse përdoruesi shkruan http:// ose klikon një lidhje HTTP.
Shfletuesi e mban këtë rregull për aq sekonda sa thotë max-age dhe e zbaton para se të dërgojë asnjë kërkesë. Pra ridrejtimi nuk ndodh më te serveri — ndodh brenda shfletuesit, dhe asnjë paketë nuk niset mbi HTTP.
Direktiva includeSubDomains e shtrin rregullin te të gjitha nëndomainet. preload e fut domainin në një listë të integruar brenda vetë shfletuesve, që vlen edhe për vizitën e parë.
Pse ka rëndësi
Pa HSTS mbetet një dritare e vogël por e vërtetë: kërkesa e parë. Kur dikush shkruan shembull.com në shiritin e adresës, shfletuesi provon http:// dhe pret ridrejtimin. Ajo kërkesë e parë udhëton e pambrojtur.
Në atë çast, kush kontrollon rrjetin mund ta ndërpresë ridrejtimin dhe ta mbajë vizitorin mbi HTTP pa e vënë re — një sulm i njohur dhe i automatizuar prej vitesh. Vizitori sheh një faqe që duket e njëjtë, pa dryn, dhe shkruan fjalëkalimin.
HSTS e mbyll atë dritare për çdo vizitë pas të parës. Me preload, edhe për të parën.
Por ka një kosto që duhet kuptuar para se ta ndezësh: rregulli nuk hiqet dot shpejt. Nëse vendos max-age një vit dhe pastaj HTTPS-ja prishet, vizitorët e mëparshëm nuk arrijnë dot te sajti fare.
Si rregullohet
# fillo me një vlerë të shkurtër, për ta provuar
Strict-Transport-Security: max-age=300
# pasi gjithçka punon, kaloje te vlera e plotë
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadHapat, me këtë radhë:
1. Sigurohu që çdo nëndomain punon mbi HTTPS, përfshirë ato që i ke harruar. 2. Vendos `max-age` të shkurtër (disa minuta) dhe testo. 3. Rrite gradualisht te një ditë, një javë, një vit. 4. Shto `includeSubDomains` vetëm pasi të jesh i sigurt për të gjithë. 5. `preload` në fund, dhe vetëm nëse je i vendosur — heqja nga lista merr muaj.
Koka ka efekt vetëm mbi HTTPS; e dërguar mbi HTTP shpërfillet.
Si e mat ky mjet
SecurityAnalyzer::checkSecurityHeaders() (services/SecurityAnalyzer.php:90) kalon nëpër një tabelë me gjashtë koka (:92–99). Rreshti për këtë kokë është services/SecurityAnalyzer.php:93.
Për secilën kontrollohet vetëm nëse çelësi strict-transport-security ekziston te kokat e përgjigjes dhe nuk është bosh (:103). Kur ekziston, jepet konstatim i kaluar me vlerën e plotë të kokës (:105); kur mungon, jepet konstatim me tekstin e ndreqjes (:109).
Kjo kokë është në grupin e rëndë: mungesa e saj jep paralajmërim me ndikim të lartë (services/SecurityAnalyzer.php:107).
Çfarë NUK e mat
Kontrolli mat praninë e kokës, jo vlerën e saj. Çdo vlerë, sado e dobët ose e pakuptimtë, kalon si e rregullt — kjo është kufizimi kryesor dhe vlen për të gjashtë kokat e sigurisë.
Për HSTS-në kjo është veçanërisht e rëndësishme: max-age=0 — që e çaktivizon HSTS-në — raportohet si kokë e vendosur dhe kontrolli kalon. Njësoj një max-age=60, që jep mbrojtje praktikisht zero.
Nuk kontrollohet as prania e includeSubDomains, as preload, as nëse koka dërgohet vërtet mbi HTTPS. Dhe matet vetëm përgjigja e një faqeje të vetme.
Kodi që e kryen matjen
services/SecurityAnalyzer.php:90— SecurityAnalyzer::checkSecurityHeadersservices/SecurityAnalyzer.php:93— strict-transport-security