Siguri
Ridrejtime me protokoll të përzier
Zinxhir që kalon midis HTTP dhe HTTPS; çdo hop mbi HTTP është i pambrojtur.
Çfarë është
Një zinxhir me protokoll të përzier kalon nga HTTPS te HTTP dhe kthehet, ose e nis rrugën me disa hapa mbi HTTP para se të mbërrijë te versioni i sigurt.
Shembull tipik: http://shembull.com → http://www.shembull.com → https://www.shembull.com. Dy hapa, dhe i pari kalon i pambrojtur nëpër rrjet.
Kjo ndodh kur rregullat e ridrejtimit u shkruan veç: një për www, një për HTTPS, dhe askush nuk i bashkoi. Rezultati punon, prandaj askush nuk e prek.
Pse ka rëndësi
Çdo hop mbi HTTP është një kërkesë e lexueshme dhe e ndryshueshme nga kushdo midis vizitorit dhe serverit.
Sulmi konkret është i njohur: një ndërhyrës në rrjet e kap hopin e pambrojtur dhe e ndryshon ridrejtimin që të çojë diku tjetër, ose e mban vizitorin mbi HTTP për gjithë sesionin. Vizitori nuk sheh asnjë paralajmërim, sepse ai nuk arriti kurrë te versioni i sigurt.
Edhe pa sulm, ka kosto: çdo hop shtesë është një udhëtim vajtje-ardhje, dhe kalimi midis protokolleve kërkon një shtrëngim të ri duarsh TLS.
HSTS-ja e zgjidh problemin për vizitat pas të parës, por jo për të parën — përveç nëse domaini është në listën e parangarkuar.
Pra ndreqja e vërtetë është te rregullat: një hop i vetëm, drejt e te destinacioni i sigurt.
Si rregullohet
# një hop i vetëm: HTTP dhe www → HTTPS pa www
server {
listen 80;
server_name shembull.com www.shembull.com;
return 301 https://shembull.com$request_uri;
}
server {
listen 443 ssl;
server_name www.shembull.com;
return 301 https://shembull.com$request_uri;
}Hapat:
- Bashko rregullat. Skema dhe hosti duhet të zgjidhen në një hop të vetëm.
- Kurrë mos ridrejto nga HTTPS te HTTP.
- Shto HSTS pasi zinxhiri të jetë i pastër, jo para.
- Kontrollo çdo variant: me dhe pa
www, me dhe pa vijë të fundit, me dhe pahttps. - Ndrysho lidhjet e brendshme dhe të jashtme që të tregojnë drejtpërdrejt te forma përfundimtare.
Si e mat ky mjet
Te RedirectAnalyzer::traceChain() (services/RedirectAnalyzer.php:74), gjatë ndjekjes së zinxhirit vendoset flamuri has_mixed_protocol kur skemat e hopave nuk janë të njëjta; ai kthehet te services/RedirectAnalyzer.php:168.
Te analyze() (:49), kur ai flamur është i vërtetë, jepet paralajmërim me ndikim mesatar dhe zbriten 10 pikë (:51).
Çfarë NUK e mat
Flamuri ngrihet kur zinxhiri përmban skema të përziera, por konstatimi nuk dallon drejtimin. Një zinxhir http → https — pra ridrejtimi i saktë dhe i dëshiruar — mund ta ngrejë të njëjtin flamur si një zinxhir https → http, që është vërtet i rrezikshëm.
Për këtë arsye konstatimi duhet lexuar bashkë me zinxhirin e plotë, jo më vete: shiko cilët hopa janë mbi HTTP dhe në çfarë rendi.
Numri i hopave të pambrojtur nuk raportohet, prandaj një zinxhir me tre hopa HTTP duket njësoj si një me një.
Kontrolli kërkon rrjet dhe nuk është i riprodhueshëm; ky analizues nuk ka dalje referencë.
Kodi që e kryen matjen
services/RedirectAnalyzer.php:74— RedirectAnalyzer::traceChainservices/RedirectAnalyzer.php:168— has_mixed_protocolservices/RedirectAnalyzer.php:49— Mixed Protocol Redirects