Defaults.Exposed

Defaults.ExposedTaisymai › HSTS (Strict-Transport-Security)

Kaip ištaisyti HSTS (Strict-Transport-Security)

HSTS yra vienos eilutės nurodymas, kurį jūsų svetainė duoda kiekvienai naršyklei: 'visada grįžk pas mane per saugų, šifruotą ryšį – niekada per nesaugų.' Be jo, jūsų spyna gali būti tyliai pašalinta bendrojoje Wi-Fi, ir pats pirmasis jūsų svetainės apsilankymas yra atskleistas.

Praktinė reikšmė jūsų verslui: Turėti HTTPS (spyną) nėra tas pats, kas ją vykdyti. Be HSTS, užpuolikas tame pačiame Wi-Fi kaip ir jūsų klientas gali tyliai sumažinti ryšį iki paprasto, nešifruoto HTTP – fiksuodamas prisijungimus, kortelių duomenis ir formos duomenis, kol klientas nieko nepastebi. Jūsų SSL sertifikatas, kurį galite mokėti, yra aplenkiamas. Pataisymas yra nemokamas ir tam, kas valdo jūsų svetainę, užtrunka apie 15 minučių.

Ką tai gali kainuoti

Kodėl tai svarbu. HTTPS apsaugo ryšį, kai jis yra šifruotas – bet jis nevykdo naršyklių juo naudotis. Užpuolikai išnaudoja tą spragą su 'SSL stripu': bet kuriame bendrame tinkle jie tyliai palieka lankytoją nesaugiame HTTP, skaitydami viską. HSTS sako naršyklei visiškai atsisakyti paprasto HTTP jūsų domenui, ilgam laikui, todėl spraga užsidaro po pirmojo apsilankymo. Tai yra viena atsakymo antraštė, nemokama pridėti, ir mūsų vertinime ji verta tikrų taškų, nes trūkstama ar per trumpa reikšmė atskleidžia kiekvieną lankytoją viešoje Wi-Fi.

Kas tai yra, paprastais žodžiais

Jūs beveik tikrai turite HTTPS – mažą spyną naršyklės juostoje. Gerai. Bet čia yra dalis, apie kurią beveik niekas nepasako: turėti HTTPS nėra tas pats, kas jį vykdyti.

HTTPS šifruoja ryšį kai naršyklė nusprendžia jį naudoti. HSTS – trumpai nuo HTTP Strict Transport Security – yra nurodymas, verčiantis naršyklę visada jį naudoti. Tai viena, nematoma eilutė, kurią jūsų svetainė siunčia kiekvienam lankytojui, sakydama iš esmės:

„Nuo šiol, mano domenui, visada kalbėk su manimi per saugų ryšį. Niekada per nesaugų. Net nebandyk.”

Naršyklė tai prisimena ir paklūsta tiek laiko, kiek nurodysite – paprastai metus. Po lankytojo pirmojo saugaus apsilankymo jų naršyklė tiesiog atsisakys įkelti jūsų svetainę per paprastą, nešifruotą HTTP, net jei kažkas bando tai priverstinai daryti.

Be HSTS, ta „visada naudoti saugią versiją” taisyklė neegzistuoja – ir užpuolikai tiksliai žino, kaip išnaudoti spragą.

Kiek tai gali jus kainuoti

Tai yra realūs, kasdieniai scenarijai. Mes niekada nevardijame realių įmonių; tai yra iliustracijos, kaip spraga naudojama.

  1. Kavinės kasa. Klientas atidaro jūsų parduotuvę kavinės Wi-Fi ir eina į kasą. Užpuolikas tame pačiame tinkle paleidžia nemokamą, gerai žinomą įrankį, kuris palieka klientą paprasto HTTP vietoj HTTPS. Klientas mato tai, kas atrodo kaip jūsų įprasta svetainė – jokio įspėjimo, jokios sulaužytos spynos vietoje, kur jie žvilgteltų – ir įveda savo kortelės duomenis. Užpuolikas perskaito kiekvieną klavišo paspaudimą. Jūsų SSL sertifikatas nieko nepadarė, nes ryšiui niekada nebuvo leista tapti saugiu.

  2. Keliaujantis darbuotojas. Darbuotojas prisijungia prie jūsų administravimo skydelio ar žiniatinklio pašto iš viešbučio ar oro uosto. Ta pati sumažėjimo gudrybė paima jų vartotojo vardą ir slaptažodį. Dabar užpuolikas turi kelią į jūsų verslą – ne todėl, kad jūsų slaptažodžių politika buvo silpna, bet todėl, kad prisijungimo puslapis buvo pasiekiamas per nesaugų HTTP.

  3. Sandoris, kuris stringa. Didesnis klientas prieš pasirašydamas siunčia jums jų standartinį saugumo klausimyną. Viena eilutė klausia: „Ar jūsų svetainė vykdo HTTPS per HSTS?” Jūsų IT asmuo turi atsakyti „ne”, ir pirkimų procesas sustoja, kol skubotai taisote nemokamą, 15 minučių nustatymą, kuris dabar atrodo kaip raudona vėliavėlė pirkėjo akivaizdoje.

  4. Kibernetinio draudimo ar atitikties tikrinimas. Draudiko nuskaitymas ar auditorius, peržiūrintis jūsų duomenų apsaugos poziciją, pažymi trūkstamą antraštę. Asmeninių duomenų šifravimas yra aiškus laukimas pagal duomenų apsaugos taisykles (GDPR 32 straipsnis), ir „mes turime sertifikatą, bet jo nevykdome” yra silpna vieta stovėti.

  5. Klaidingas saugumo jausmas. Mokate už SSL, spyna rodoma, ir visi mano, kad svetainė yra saugi. Dažniausiai yra – kol klientas yra bendrame tinkle, kas yra tiksliai tada, kai jie yra labiausiai pažeidžiami ir mažiausiai tikėtina, kad pastebės kažką neteisingo.

Sąsaja: išlaidos nėra abstrakčios. Tai yra realaus kliento kortelė ar prisijungimas, sugautas blogiausiu įmanomu momentu, be jokio įspėjimo.

Kas tai iš tikrųjų yra

Kai naršyklė paprašo jūsų svetainės puslapio, jūsų serveris grąžina puslapį bei keletą nematomų „antraščių” – papildomų nurodymų, kuriuos naršyklė skaito, bet lankytojas niekada nemato. HSTS yra viena iš tų antraščių:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Trys dalys svarbios:

Kodėl „pirmasis apsilankymas” svarbus

HSTS turi vieną nedalomą apribojimą: naršyklė paklūsta taisyklei tik po to, kai matė antraštę bent kartą. Taigi naujo lankytojo pirma jungtis yra vis dar maža atskleidimo proga. Du dalykai ją susiaurina: HTTP į HTTPS peradresavimas (kuris juos greitai perveda į saugią versiją) ir preload (kuris visiškai pašalina langą). Štai kodėl pilna sąranka poruoja HSTS su tinkamu peradresavimu.

Kaip atrodo „gerai” – ir kaip tai vertinama

Mūsų tikrinimas skaito jūsų gyvą antraštę ir vertina max-age:

max-age reikšmėKą tai reiškiaRezultatas
1 metai ar daugiau (≥ 31536000)Puiku – rekomenduojamas nustatymasPilni taškai
6 mėnesiai ar daugiau (≥ 15768000)Gerai, bet ne pilni metaiDalinis
1 diena ar daugiau (≥ 86400)Silpnas – per trumpas, kad būtų patikimasŽemas / dalinis
Mažiau nei 1 diena arba jokios antraštėsFaktiškai jokios apsaugosNesėkmė (aukštas rimtumas)

Taigi antraštė, kuri egzistuoja, bet nustatyta kelioms minutėms, laikoma nesėkme – ji atrodo sukonfigūruota, bet neatlieka darbo. Siekite vienerių metų. Tikrinimas taip pat pažymi, ar includeSubDomains ir preload yra.

Kaip tai ištaisyti (nemokama, ~15 minučių)

Perduokite šį skyrių tam, kas valdo jūsų svetainę – IT asmeniui, žiniatinklio kūrėjui ar prieglobos palaikymui. Pataisymas yra nemokamas. Tai viena antraštė arba perjungimas jūsų prieglobos platformoje. Nėra ko pirkti.

Pirmiausia viena svarbi tvarkos taisyklė: HSTS yra lipnus – kai įjungtas, naršyklės atsisakys paprasto HTTP jūsų domenui visam max-age. Todėl patvirtinkite, kad HTTPS teisingai veikia jūsų pagrindinėje svetainėje ir kiekviename subdomenui prieš plačiai jį įjungiant. Saugus kelias yra: bandomoji trumpa reikšmė → patvirtinkite, kad niekas nesugadino → padidinkite iki vienerių metų.

1 žingsnis – įsitikinkite, kad HTTPS jau veikia visur

Aplankykite savo svetainę ir pagrindinius subdomenus per https:// ir patvirtinkite, kad jie tinkamai įkraunami su galiojančiu sertifikatu. Taip pat patvirtinkite, kad paprastų http:// prašymų peradresavimas į https://. (Jei ne, pirmiausia ištaisykite HTTP į HTTPS peradresavimą – HSTS daro prielaidą, kad jis yra.)

2 žingsnis – pridėkite antraštę (pasirinkite savo platformą)

Cloudflare (ar panašus CDN): Tai yra lengviausia. Eikite į SSL/TLS → Briaunos sertifikatai → HTTP Strict Transport Security (HSTS) ir įjunkite. Nustatykite Max-Age į 6 arba 12 mėnesių ir įjunkite „Taikyti HSTS politiką subdomenams”, kai esate tikri, kad visi subdomenai yra HTTPS.

Nginx: pridėkite savo HTTPS server bloke:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Apache: įsitikinkite, kad mod_headers įjungtas, tada pridėkite savo HTTPS virtualaus prieglobos:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Microsoft IIS: pridėkite prie web.config viduje <customHeaders>:

<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />

Google Workspace / Microsoft 365 pastaba: jie maitina jūsų el. paštą, ne jūsų svetainės prieglobą – HSTS nustatytas ten, kur jūsų vieša svetainė iš tikrųjų gyvena (jūsų CDN, žiniatinklio serveris ar svetainių kūrėjas), ne Workspace / 365 administratoriuje. Jei jūsų svetainė yra svetainių kūrėjuje kaip Squarespace, Wix ar Shopify, HSTS paprastai tvarkomas jums; patikrinkite jų SSL / saugumo nustatymus, jei mūsų tikrinimas tai pažymi.

3 žingsnis – bandomasis mažas, tada patvirtinkite

Pradėkite su max-age=300 (5 minutės). Patvirtinkite, kad svetainė vis dar puikiai įkraunama visur. Tada padidinkite iki max-age=31536000 (vieneri metai). Tai yra pilnų taškų nustatymas.

4 žingsnis (neprivalomas, aukso standartas) – preload

Kai esate tikri ir kurį laiką paleidote vienų metų antraštę su includeSubDomains, galite pateikti savo domeną hstspreload.org, kad jis būtų įmontuotas naršyklėse. Tai uždaro pirmojo apsilankymo langą visiškai. Laikykite tai sąmoningu įsipareigojimu – domeno pašalinimas iš sąrašo yra lėtas.

Dažnos klaidos

DUK

Mes jau turime HTTPS ir spyna rodoma. Ar to nepakanka?

Ne – ir tai yra vienas dažniausių nesusipratimų. Spyna reiškia, kad ryšys GALI būti šifruotas; ji nevykdo naršyklių naudoti šifruotą versiją. Be HSTS, užpuolikas tame pačiame tinkle gali palikti lankytoją paprasto HTTP ryšyje (vadinama SSL stripu) ir skaityti viską, ką jie įveda, kol klientas mato normaliai atrodančią svetainę. HSTS yra nurodymas, kuris daro 'tik šifruota' privaloma. HTTPS be HSTS yra užrakinta durys, kuri iš tikrųjų nėra skląsta.

Ar tai brangu ar rizikinga įjungti?

Pats pataisymas yra nemokamas – tai viena eilutė jūsų žiniatinklio serveryje arba perjungimas jūsų CDN – ir užtrunka apie 15 minučių. Vienas realus įspėjimas: HSTS yra lipnus. Kai naršyklė jį pamato, ji atsisakys paprasto HTTP jūsų domenui tiek laiko, kiek nurodėte. Todėl turite būti tikri, kad HTTPS veikia jūsų pagrindinėje svetainėje IR kiekviename subdomene prieš plačiai jį įjungiant. Pradėkite nuo trumpos bandomosios reikšmės, patvirtinkite, kad niekas nesugadino, tada padidinkite iki metų. Atlikta tokia tvarka, rizika yra nereikšminga.

Kaip iš tikrųjų atrodo 'gerai'?

Max-age bent vienerių metų (31536000 sekundžių). Mūsų tikrinimas suteikia pilnus taškus metų ar daugiau atveju, dalinius taškus šešiems mėnesiams, silpnas / daliniai taškus dienai, ir laiko bet ką trumpesnį nei diena kaip faktiškai nebuvimą. Stipriausia sąranka taip pat prideda includeSubDomains (apima shop.jusvardas.com, app.jusvardas.com ir kt.) ir preload (įregistruoja apsaugą naršyklėse, kad net pats pirmas apsilankymas būtų saugus).

Kas yra 'preload' ir ar mums jo reikia?

HSTS apsaugo lankytoją tik TADA, kai jų naršyklė bent kartą matė antraštę – todėl visiškai naujo lankytojo pirmas prašymas yra vis dar mažas atskleidimo langas. HSTS preload sąrašas, įmontuotas į Chrome, Firefox, Safari ir Edge, uždaro tą langą iš anksto išsiuntęs jūsų domeną naršyklėms. Tai neprivaloma ir šiek tiek didesnis įsipareigojimas (pašalinimas yra lėtas), bet tai aukso standartas. Daugumai mažų įmonių vienerių metų max-age su includeSubDomains jau yra stiprus, saugus rezultatas; preload yra papildomas žingsnis, kai esate nusistovėję.

Esame Squarespace / Wix / Shopify – ar mums apskritai reikia ką nors daryti?

Dauguma pilnai prieglobomų svetainių kūrėjų (Squarespace, Wix, Shopify ir panašūs) vykdo HTTPS ir dažnai automatiškai nustato HSTS jums – todėl galite jau praeiti nieko nedarydami. Išimtis yra tada, kai naudojate pasirinktinį domeną ar CDN prieš savo svetainę; tada nustatymas gali kristi per spragas. Paleiskite tikrinimą: jei jis praeina, esate baigęs. Jei pažymi, pataisymas yra perjungimas platformos SSL / saugumo nustatymuose arba viena eilutė jūsų CDN.

Jei neištaisysime, ar tai sumažins mūsų vertinimą?

Taip. HSTS yra vertinamas žiniatinklio saugumo tikrinimas, ne informacinis – trūkstama ar per trumpa antraštė kainuoja taškų ir yra įvertintas kaip aukšto rimtumo, nes tiesiogiai atskleidžia jūsų lankytojų duomenis bendruose tinkluose. Tai taip pat yra vienas pigiausių taškų atgauti: viena nemokama antraštė, apie 15 minučių darbo.