HSTS ir tīmekļa drošības atbildes galvene. Nosaukums ir akronīms vārdam “HTTP Strict Transport Security”. HSTS galvenes funkcija ir piespiest pārlūkprogrammas izveidot savienojumu ar vietnēm, izmantojot HTTPS.
Padoms. HTTPS izmanto šifrēšanu, lai aizsargātu jūsu tīmekļa savienojumu no hakeriem, kas mēģina to modificēt vai pārraudzīt. HTTP nav šīs aizsardzības, tāpēc hakeris, kas atrodas pareizajā vietā, var pārraudzīt un modificēt jūsu HTTP trafiku.
Tīmekļa atbildes galvene ir metadatu daļa, ko serveris nosūta, atbildot uz tīmekļa pieprasījumiem. Šo virsrakstu apakškopu bieži dēvē par drošības galvenēm, jo to mērķis ir palielināt vietnes un lietotāja drošību.
HSTS galvenē ir divas obligātas daļas un divas izvēles. Galvenes nosaukums “Strict-Transport-Security” un pēc tam operators “maksimālais vecums” un vērtība ir obligāti. Dažreiz tiek izmantots arī cits operatoru pāris, “includeSubDomains” un “preload”.
Kad pārlūkprogramma saņem HTTPS atbildi ar HSTS galveni, tai tiek uzdots izveidot savienojumu ar šo vietni un visiem tajā esošajiem resursiem, izmantojot tikai HTTPS “maksimālā vecuma” taimera darbības laikā. “Maksimālais vecums” ir mainīgais, kas apraksta, cik ilgi iestatījums ir jāatceras pārlūkprogrammai. “Max-age” vērtība ir norādīta sekundēs, ieteicamā vērtība ir “31536000”, kas ir viens gads.
Ideja ir tāda, ka šī taimera darbības laikā, kas tiek atiestatīts ar katru nākamo lapas ielādi, pārlūkprogrammai būs nepieciešams HTTPS savienojums un tiks noraidīti visi HTTP resursi. Tas pasargā no uzbrukumiem starp personām, kad hakeris starp jums un tīmekļa serveri var manipulēt ar jūsu saņemtajām atbildēm.
Galvenais punkts, kurā tas jūs aizsargā, ir pirmais savienojums. Parasti, kad izveidojat savienojumu ar vietni, varat pieprasīt HTTP vietni un pēc tam tikt pārsūtīta uz HTTPS vietni. Diemžēl hakeris, kurš atrodas vidējā pozīcijā, var novērst šo jaunināšanu uz HTTPS un pēc tam varētu nozagt vai pārraudzīt jūsu darbības vietnē. Tomēr, tiklīdz pārlūkprogramma ir redzējusi HSTS galveni, jūsu pārlūkprogramma izveidos pat pirmo savienojumu, izmantojot HTTPS, pasargājot jūs no hakeriem.
HSTS arī novērš jebkādu nedrošu resursu ielādi, kurus uzbrucējs varētu arī ļaunprātīgi pārveidot, ja tie tiktu piegādāti, izmantojot HTTP.
Operators “includeSubDomains” tiek izmantots, lai norādītu, ka galvenei ir jāattiecas arī uz visiem vietnes apakšdomēniem.
HSTS priekšielādes saraksts
Jūs varat pamanīt, ka HSTS joprojām neaizsargā jūs, kad pirmo reizi izveidojat savienojumu ar vietni. Šeit darbojas “priekšielādēšanas” operators. Tīmekļa vietnes var iesniegt sevi, lai tās tiktu iekļautas HSTS priekšielādes sarakstā, “priekšielādes” operators ir obligāts rādītājs, ja tas tā ir. HSTS priekšielādes saraksts tiek regulāri atjaunināts un saglabāts pārlūkprogrammā, ja vietne tajā ir iekļauta, pārlūkprogramma tai piemēros HSTS aizsardzību. Tas notiek pat pirmajā savienojumā, pirms pārlūkprogramma varēja redzēt HSTS atbildes galveni.
Padoms. Lai HSTS priekšielādes sarakstam būtu jāpievieno “maksimālais vecums” — gads vai vairāk.
Problēmas ar HSTS
Viens no galvenajiem HSTS punktiem ir tas, ka tas parāda kļūdas ziņojumu, ja rodas problēmas ar HTTPS savienojumu. Papildu drošības nolūkos lietotājiem nav jāspēj apiet HSTS kļūdu ziņojumus, kā tas būtu iespējams ar parastajām HTTPS kļūdām.
Diemžēl tas var radīt problēmas, ja uzņēmums HSTS ievieš pirms visas vietnes un katrs tajā izmantotais resurss atbalsta HTTPS. Šādā gadījumā lietotāji sāks redzēt HSTS drošības kļūdu ziņojumus, kurus viņi nevar apiet, būtībā pilnībā izjaucot vietni. Sliktākais ir tas, ka, vienkārši noņemot HSTS galvenes, problēma šiem lietotājiem netiek novērsta, jo viņu pārlūkprogramma turpinās ieviest HSTS potenciāli mēnešus ilgušo “maksimālo vecumu”.
Tāpēc ir ļoti svarīgi, lai, pirmo reizi izvietojot galveni, tiktu izmantots īss “maksimālais vecums”. Ja ir kādas problēmas, pēc atklāšanas tās saglabājas tikai īsu laiku. Tikai tad, kad esat pārliecināts, ka jūsu vietne ir pilnībā saderīga ar HSTS, konfigurējiet garu HSTS taimeri.
Padoms. Ir iespējams arī iestatīt “maksimālo vecumu” 0, tādējādi saglabāto HSTS ierakstu būtībā noņem no visiem, kas to redz. Tas var palīdzēt, ja rodas problēma, taču tas ietekmēs lietotājus tikai tad, kad un ja viņi nolems mēģināt vēlreiz.