Siguri
Koka X-Frame-Options
Ndalon futjen e faqes brenda një korniza në një sajt tjetër; mbrojtje kundër clickjacking-ut.
Çfarë është
X-Frame-Options i thotë shfletuesit nëse faqja lejohet të shfaqet brenda një <iframe>. Vlerat janë DENY (kurrë) dhe SAMEORIGIN (vetëm brenda të njëjtit origjinal).
Ajo u krijua kundër *clickjacking*-ut: sulmuesi e fut faqen tënde në një kornizë të padukshme mbi faqen e tij, dhe përdoruesi që mendon se po shtyp një buton të padëmshëm shtyp në fakt një buton te faqja jote — ku është ende i loguar.
Sot ajo konsiderohet e zëvendësuar nga direktiva frame-ancestors e CSP-së, e cila jep kontroll më të imët. Por mbetet e dobishme si mbështetje për shfletues më të vjetër.
Pse ka rëndësi
Sulmi është i thjeshtë dhe i vjetër, por funksionon ende. Faqja e sulmuesit shfaq një lojë ose një buton "Shiko videon"; sipër tij, e padukshme, rri faqja jote me butonin "Fshi llogarinë" ose "Konfirmo pagesën". Klikimi shkon te faqja jote, me sesionin e vlefshëm të përdoruesit.
Për çdo aplikacion ku përdoruesi kryen veprime — ndryshime cilësimesh, pagesa, miratime — kjo është rrezik i drejtpërdrejtë.
Ka edhe një përdorim të dytë, jo sigurie: pa këtë kokë, kushdo mund ta fusë sajtin tënd brenda të tijit dhe ta shfaqë si të vetin.
Për faqe publike pa asnjë veprim, rreziku është i vogël. Por kosto e kokës është zero, dhe mungesa e saj shfaqet në çdo auditim.
Si rregullohet
# mënyra moderne — e preferuar
Content-Security-Policy: frame-ancestors 'none'
# mbështetje për shfletues të vjetër
X-Frame-Options: DENYHapat:
- `DENY` kur faqja nuk duhet futur askund. Kjo është parazgjedhja e sigurt.
- `SAMEORIGIN` kur e fut vetë brenda sajtit tënd.
- Për lista të lejuara përdor CSP-në:
frame-ancestors https://partner.com. VleraALLOW-FROMe kësaj koke nuk mbështetet më nga shfletuesit modernë. - Vendosi të dyja. Shfletuesit modernë i japin përparësi CSP-së; të vjetrit lexojnë këtë kokë.
- Testo integrimet ekzistuese para se ta ndezësh — nëse një partner e fut faqen tënde,
DENYe prish.
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:95.
Për secilën kontrollohet vetëm nëse çelësi x-frame-options 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 lehtë: mungesa e saj jep konstatim informativ me ndikim mesatar (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ë.
Një vlerë e pavlefshme ose e vjetruar si ALLOW-FROM https://dikush.com — që shfletuesit modernë e shpërfillin krejt — raportohet si mbrojtje e vendosur.
Më e rëndësishmja: nuk merret parasysh `frame-ancestors` e CSP-së. Një sajt që e ka zgjidhur problemin në mënyrën moderne dhe të plotë raportohet si i pambrojtur, sepse kjo kokë e vjetër mungon. Konstatimi duhet lexuar bashkë me atë të CSP-së.
Kodi që e kryen matjen
services/SecurityAnalyzer.php:90— SecurityAnalyzer::checkSecurityHeadersservices/SecurityAnalyzer.php:95— x-frame-options