HSTS paaiškinimas: Strict-Transport-Security teisingai
HTTP Strict Transport Security (HSTS) yra viena atsako antraštė, liepianti naršyklėms su jūsų svetaine bendrauti tik per HTTPS. Ji uždaro mažą, bet pavojingą langą, kur pirmasis apsilankymas gali būti pažemintas ar perimtas — tačiau įdiegta neatsargiai ji taip pat gali užrakinti lankytojus nuo jūsų svetainės.
Trumpai
Siųskite Strict-Transport-Security, kai visa jūsų svetainė veikia per HTTPS. Pradėkite nuo trumpo max-age, įsitikinkite, kad niekas nesugenda, tada padidinkite jį iki metų ir pridėkite includeSubDomains. preload pridėkite tik tada, kai esate tikri, kad kiekvienas dabartinis ir būsimas subdomenas visada bus HTTPS. Ar jūsų svetainė ją siunčia, patikrinkite mūsų antraščių patikra.
Kokią problemą HSTS sprendžia
Kai kas nors įveda example.com be schemos, naršyklė pirmiausia bando paprastą http://. Net jei tai nukreipiate į HTTPS, pati pirmoji užklausa keliauja neužšifruota. Užpuolikas tame pačiame tinkle gali ją perimti ir išlaikyti auką suklastotoje HTTP jūsų svetainės versijoje — tai technika, vadinama SSL nulupimu (SSL stripping). HSTS pašalina tą riziką: kai naršyklė pamato antraštę, ji tyliai perrašo kiekvieną būsimą užklausą į jūsų domeną į HTTPS dar prieš iš įrenginio išeinant vienam baitui.
Antraštė ir jos direktyvos
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Visą darbą atlieka trys direktyvos:
| Direktyva | Reikšmė |
|---|---|
max-age | Kiek sekundžių naršyklė prisimena priverstinai naudoti HTTPS. 31536000 yra vieni metai. |
includeSubDomains | Taiko taisyklę kiekvienam subdomenui, ne tik tiksliai jį atsiuntusiai priegloba. |
preload | Signalizuoja, kad norite, jog domenas būtų įrašytas į naršyklių įtaisytą HSTS sąrašą, kad HTTPS būtų priverstinai naudojamas net pirmojo apsilankymo metu. |
Antraštė paisoma tik tada, kai ji pateikiama per galiojantį HTTPS ryšį. Naršyklės ją ignoruoja paprastame HTTP, ir tai sąmoninga — užpuolikas neužšifruotame ryšyje neturėtų galėti jos nustatyti.
Kodėl max-age svarbus abiem kryptimis
max-age reikšmė yra pažadas, kurį naršyklė laiko, net jei persigalvojate. Nustatykite jį metams, ir kiekvienas lankytojas kiekviename įrenginyje užrakinamas prie HTTPS metams, be jokios galimybės jums nuotoliniu būdu tai atšaukti. Būtent to ir norite apsaugai — ir būtent todėl turėtumėte kilti laipsniškai, o ne iškart šokti prie didelės reikšmės.
Saugus diegimas
Traktuokite HSTS kaip laiptus, o ne jungiklį:
1 žingsnis Strict-Transport-Security: max-age=300
2 žingsnis Strict-Transport-Security: max-age=86400
3 žingsnis Strict-Transport-Security: max-age=31536000; includeSubDomains
4 žingsnis Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Pradėkite nuo penkių minučių. Įsitikinkite, kad kiekvienas puslapis, išteklius ir subdomenas švariai kraunasi per HTTPS ir kad nėra mišraus turinio įspėjimų. Tik tada pratęskite galiojimą. Prieš pridedant includeSubDomains, įsitikinkite, kad kiekvienas subdomenas — įskaitant vidinius įrankius, testavimo (staging) ir senas prieglobas — turi veikiantį sertifikatą, nes taisyklė iškart taikoma jiems visiems.
„Preload“ sąrašas ir spąstai
Įprastai naršyklė priverstinai taiko HSTS tik po to, kai bent kartą pamatė antraštę. „Preload“ sąrašas uždaro net tą pirmojo apsilankymo tarpą, į pačią naršyklę įtraukdamas įkoduotą tik-HTTPS domenų rinkinį. Kad būtų priimta, jūsų antraštė turi apimti preload, bent vienų metų max-age ir includeSubDomains, o domeną pateikiate bendram „preload“ sąrašui, iš kurio semiasi pagrindinės naršyklės.
Kur ją nustatyti
Siųskite antraštę tik savo HTTPS atsakuose. Apache serveryje naudokite Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"; Nginx serveryje — add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;. Palikite savo paprasto HTTP klausytoją nedarantį nieko, tik 301 nukreipimą į HTTPS — žiūrėkite HTTP nukreipimą į HTTPS. HSTS yra vienas punktas platesniame saugumo antraščių kontroliniame sąraše; baigę atlikite patikrą, kad įsitikintumėte, jog jis veikia.
Dažniausiai užduodami klausimai
Ar HSTS pakeičia mano HTTP į HTTPS nukreipimą?
Ne. Nukreipimo vis tiek reikia pirmajam apsilankymui ir naršyklėms, kurios niekada nematė antraštės. HSTS yra papildomas sluoksnis, pašalinantis perėmimo langą pakartotiniuose apsilankymuose.
Kas nutinka, jei mano sertifikatas pasibaigia, kol HSTS aktyvus?
Naršyklė atsisakys įkelti svetainę ir neleis vartotojams pereiti pro sertifikato įspėjimą. Tai numatyta, tad sertifikato atnaujinimą laikykite automatizuotą ir stebimą.
Ar kiekviena svetainė turėtų naudoti „preload“?
Ne. Paprasta antraštė gerai apsaugo grįžtančius lankytojus. „Preload“ padeda tik pačiam pirmajam apsilankymui ir yra sunkiai atšaukiamas, tad palikite jį svetainėms, tikrai liksiančioms tik HTTPS visuose subdomenuose.
Susiję vadovai
HTTP saugumo antraštės: pilnas kontrolinis sąrašas
Visos svarbios HTTP saugumo antraštės, nuo ko jos apsaugo ir paruošta pradinė konfigūracija.
Skaityti →HTTP saugumo antraštėsTurinio saugumo politika (CSP) pradedantiesiems
Kaip CSP stabdo kenkėjiškus scenarijus (XSS), kodėl ją sunku suderinti ir saugus būdas įdiegti pirmąją politiką.
Skaityti →HTTP saugumo antraštėsX-Frame-Options ir apsauga nuo „clickjacking“
Kaip veikia „clickjacking“ atakos ir kaip X-Frame-Options bei frame-ancestors neleidžia įterpti jūsų svetainės.
Skaityti →Patikrinkite savo svetainę pagal šį vadovą
Atlikite nemokamą ScanOpsPro patikrą ir pažiūrėkite, kaip jūsų svetainė tvarkosi su pagrindais.
Atlikti nemokamą patikrą