Kalo te përmbajtja
SEO Analyzer

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: DENY

Hapat:

  • `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. Vlera ALLOW-FROM e 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, DENY e 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:90SecurityAnalyzer::checkSecurityHeaders
  • services/SecurityAnalyzer.php:95x-frame-options

Standardi