Defaults.Exposed

Defaults.ExposedRešenja › HSTS (Strict-Transport-Security)

Kako popraviti HSTS (Strict-Transport-Security)

HSTS je jednolinijska instrukcija koju vaš sajt daje svakom pretraživaču: 'uvek se vrati kod mene putem sigurne, šifrovane veze — nikad nesigurne.' Bez njega, vaš katanac može biti tiho uklonjen na zajedničkom WiFi-ju, a i sama prva posjeta vašem sajtu je izložena.

Suština za vaše poslovanje: Imanje HTTPS-a (katanca) nije isto što i njegova primjena. Bez HSTS-a, napadač na istom WiFi-ju kao vaš kupac može tiho degradirati vezu na običan, nešifrovan HTTP — hvatajući prijave, kartične podatke i podatke forme dok kupac ne vidi ništa loše. Vaš SSL sertifikat, za koji možda plaćate, biva zaobiđen. Popravka je besplatna i traje oko 15 minuta za ko god pokreće vaš sajt.

Šta vam ovo može koštati

Zašto je to važno. HTTPS štiti vezu jednom kad je šifrovana — ali ne prisiljava pretraživače da je koriste. Napadači iskorišćavaju tu prazninu s 'SSL strippingom': na bilo kojoj zajedničkoj mreži tiho drže posjetioca na nesigurnom HTTP-u, čitajući sve. HSTS govori pretraživaču da odbije običan HTTP za vaš domen u potpunosti, dugo vremena, pa se praznina zatvori nakon prve posjete. To je jedan response header, besplatan za dodavanje, a u našem bodovanju vrijedi prave bodove jer nedostajuća ili prekratka vrijednost ostavlja svakog posjetioca na javnom WiFi-ju izloženim.

Šta je ovo, jednostavnim rečima

Gotovo sigurno imate HTTPS — mali katanac u traci pretraživača. Dobro. Ali evo dijela koji skoro niko ne kaže: imanje HTTPS-a nije isto što i njegova primjena.

HTTPS čini vezu šifriranom jednom kad se pretraživač odluči da je koristi. HSTS — skraćenica za HTTP Strict Transport Security — je instrukcija koja čini da pretraživač uvek koristi. To je jedna, nevidljiva linija koju vaš sajt šalje svakom posjetiocu koja u suštini kaže:

“Od sada, za moj domen, razgovaraj sa mnom samo putem sigurne veze. Nikad nesigurne. Ne pokušavaj ni.”

Pretraživač to pamti i poštuje onoliko dugo koliko mu kažete — tipično godinu dana. Nakon prve sigurne posjete posjetioca, njihov pretraživač će jednostavno odbiti učitati vaš sajt putem običnog, nešifrovanog HTTP-a, čak i ako nešto pokušava to prisiliti.

Bez HSTS-a, to pravilo “uvek koristi sigurnu verziju” ne postoji — a napadači znaju tačno kako da iskoriste tu prazninu.

Šta vam ovo može koštati

Ovo su realistični, svakodnevni scenariji. Nikad ne navodimo pravo preduzeće; ovo su ilustracije kako se praznina koristi.

  1. Checkout u kafiću. Kupac otvori vaš shop na kafićkom WiFi-ju i krene na checkout. Napadač na istoj mreži pokreće besplatan, dobro poznat alat koji drži kupca na običnom HTTP-u umjesto HTTPS-a. Kupac vidi ono što izgleda kao vaš normalni sajt — bez upozorenja, bez pokvarenog katanca na mestu gdje bi gledali — i upiše podatke kartice. Napadač čita svaki pritisak tipke. Vaš SSL sertifikat nije ništa uradio, jer veza nikad nije mogla postati sigurna.

  2. Zaposleni koji putuje. Zaposleni se prijavi na vaš admin panel ili webmail iz hotela ili aerodroma. Isti trik degradiranja hvata korisničko ime i lozinku. Sada napadač ima ulaz u vaš posao — ne zato što je politika lozinki bila slaba, već zato što je stranica za prijavu bila dostupna putem nesigurnog HTTP-a.

  3. Posao koji zastaje. Veći kupac vam šalje standardni bezbednosni upitnik pre potpisivanja. Jedan red pita: “Da li vaš sajt primjenjuje HTTPS putem HSTS-a?” Vaš IT kontakt mora odgovoriti “ne,” i nabavni proces se zaustavi dok žurite da popravite besplatno, 15-minutno podešavanje koje sada izgleda kao crvena zastava pred kupcem.

  4. Cyber-osiguranje ili compliance provjera. Skeniranje osiguravača, ili revizor koji pregleda vašu zaštitu podataka, flaguje nedostajući header. Enkripcija ličnih podataka je eksplicitno očekivanje prema propisima o zaštiti podataka (GDPR Član 32), a “imamo sertifikat, ali ga ne primjenjujemo” je slabo mjesto na kom stajati.

  5. Lažan osjećaj sigurnosti. Plaćate za SSL, katanac prikazuje i svi pretpostavljaju da je sajt siguran. Uglavnom je — sve dok kupac nije na zajedničkoj mreži, što je tačno kad su najranjiviji i najmanje vjerovatno da će primijetiti da je nešto pogrešno.

Nit: trošak nije apstraktan. To je pravi kupčev broj kartice ili prijava, snimljeni u najgorem mogućem trenutku, bez da ikakav alarm zvoni.

Šta je to zapravo

Kad pretraživač traži stranicu od vašeg sajta, vaš server šalje natrag stranicu plus neke nevidljive “headere” — dodatne instrukcije koje pretraživač čita, ali posjetilac nikad ne vidi. HSTS je jedan od tih headera:

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

Tri dijela su bitna:

Zašto je “prva posjeta” bitna

HSTS ima jedno inherentno ograničenje: pretraživač poštuje pravilo tek nakon što vidi header barem jednom. Dakle sasvim nova posjeta posjetioca i dalje je mali prozor izloženosti. Dvije stvari ga sužavaju: HTTP-na-HTTPS preusmjeravanje (koje ih brzo stavlja na sigurnu verziju) i preload (koji potpuno uklanja prozor). Zbog toga se kompletna postavka HSTS-a kombinuje s ispravnim preusmjeravanjem.

Kako izgleda “dobro” — i kako se boduje

Naša provjera čita vaš živi header i ocjenjuje max-age:

max-age vrijednostŠta značiRezultat
1 godina ili više (≥ 31536000)Odlično — preporučena postavkaPuni bodovi
6 meseci ili više (≥ 15768000)Dobro, ali ne puna godinaDjelomičan
1 dan ili više (≥ 86400)Slabo — prekratko za pouzdanostNisko / djelomičan
Ispod 1 dana, ili nema headeraEfektivno nema zaštitePad (visoka ozbiljnost)

Dakle header koji postoji, ali je postavljen na nekoliko minuta, tretira se kao pad — izgleda konfigurisano, ali ne obavlja posao. Ciljajte na godinu dana. Provjera također bilježi da li su includeSubDomains i preload prisutni.

Kako popraviti (besplatno, ~15 minuta)

Prosledite ovaj odeljak ko god pokreće vaš sajt — vašoj IT osobi, web developeru ili podršci hostinga. Popravka je besplatna. To je jedan header, ili toggle u vašoj hosting platformi. Nema ničeg za kupiti.

Jedna važna napomena o redoslijedu na prvom mestu: HSTS je ljepljiv — jednom kad je omogućen, pretraživači će odbijati obični HTTP za vaš domen tokom punog max-age. Dakle potvrdite da HTTPS ispravno funkcioniše na vašem glavnom sajtu i svakom subdomenu pre nego što ga uključite. Siguran put je: testirajte s kratkom vrijednošću → potvrdite da se ništa ne pokvari → podignite na godinu dana.

Korak 1 — Pobrinite se da HTTPS već radi svugdje

Posjetite vaš sajt i ključne subdomene putem https:// i potvrdite da se čisto učitavaju s validnim sertifikatom. Potvrdite i da obični http:// zahtjevi preusmjeravaju na https://. (Ako ne, ispravite HTTP-na-HTTPS preusmjeravanje prvo — HSTS pretpostavlja da je to na snazi.)

Korak 2 — Dodajte header (odaberite platformu)

Cloudflare (ili sličan CDN): Ovo je najlakše. Idite u SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS) i omogućite ga. Postavite Max-Age na 6 ili 12 meseci i omogućite “Apply HSTS policy to subdomains” jednom kad ste sigurni da su svi subdomeni na HTTPS-u.

Nginx: dodajte unutar vašeg HTTPS server bloka:

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

Apache: osigurajte da je mod_headers omogućen, zatim dodajte vašem HTTPS virtual hostu:

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

Microsoft IIS: dodajte u web.config unutar <customHeaders>:

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

Napomena za Google Workspace / Microsoft 365: ovi pokreću vaš imejl, a ne vaš web hosting — HSTS se postavlja gdje god vaš javni sajt zapravo živi (vaš CDN, web server ili graditelj sajtova), a ne u Workspace/365 admin panelu. Ako je vaš sajt na graditelju poput Squarespace-a, Wix-a ili Shopify-ja, HSTS se obično za vas rukuje; provjerite njihova SSL/bezbednosna podešavanja ako naša provjera to flaguje.

Korak 3 — Testirajte malo, zatim se obavežite

Počnite s max-age=300 (5 minuta). Potvrdite da se sajt i dalje svuda savršeno učitava. Zatim ga podignite na max-age=31536000 (godinu dana). To je postavka s punim bodovima.

Korak 4 (opciono, zlatni standard) — preload

Jednom kad ste sigurni i koristite jednogodišnji header s includeSubDomains neko vreme, možete podnijeti vaš domen na hstspreload.org da bude upečen u pretraživače. Ovo potpuno zatvara prozor prve posjete. Tretirajte ga kao svjesnu obavezu — uklanjanje domena s liste je sporo.

Česte greške

Često postavljana pitanja

Već imamo HTTPS i prikazuje se katanac. Zar to nije dovoljno?

Ne — i ovo je daleko najčešći nesporazum. Katanac znači da veza MOŽE biti šifrovana; ne prisiljava pretraživače da koriste šifrovanu verziju. Bez HSTS-a, napadač na istoj mreži može zadržati posjetioca na običnom HTTP-u (tzv. SSL stripping) i čitati sve što upiše, dok kupac vidi sasvim normalan izgled sajta. HSTS je instrukcija koja čini 'samo šifrovano' obaveznim. HTTPS bez HSTS-a je zaključana vrata koja zapravo nisu zaključana.

Je li ovo skupo ili rizično za uključivanje?

Sama popravka je besplatna — to je jedna linija u vašem web serveru ili toggle u vašem CDN-u — i traje oko 15 minuta. Jedna prava napomena: HSTS je 'ljepljiv'. Jednom kad ga pretraživač vidi, odbijat će obični HTTP za vaš domen onoliko koliko ste naznačili. Dakle morate biti sigurni da HTTPS funkcioniše na vašem glavnom sajtu I svakom subdomenu pre nego što ga široko omogućite. Počnite s kratkom test vrijednošću, potvrdite da se ništa ne pokvari, zatim podignite na godinu dana. Urađeno tim redosledom, rizik je zanemariv.

Kako zapravo izgleda 'dobro'?

max-age od barem godinu dana (31536000 sekundi). Naša provjera dodjeljuje pune bodove na godini dana ili više, djelomične bodove na šest meseci, slab/djelomičan na jedan dan, i tretira bilo šta ispod jednog dana kao efektivno odsutno. Najjača postavka dodaje i includeSubDomains (pokriva shop.vasadomena.com, app.vasadomena.com itd.) i preload (peče zaštitu u pretraživače da čak i sasvim prva posjeta bude sigurna).

Šta je 'preload' i trebamo li to?

HSTS štiti posjetioca tek NAKON što mu pretraživač vidi header barem jednom — dakle prva posjeta potpuno novog posjetioca i dalje je mali prozor. HSTS preload lista, ugrađena u Chrome, Firefox, Safari i Edge, zatvara taj prozor tako što šalje vaš domen u pretraživače unaprijed. Opciono je i nešto veća obaveza (uklanjanje je sporo), ali je zlatni standard. Za većinu malih preduzeća, jednogodišnji max-age s includeSubDomains je već jak, siguran rezultat; preload je dodatni korak jednom kad ste se smjestili.

Na Squarespace-u / Wix-u / Shopify-ju smo — trebamo li išta raditi?

Većina potpuno hostovanih graditelja sajtova (Squarespace, Wix, Shopify i slično) primjenjuje HTTPS i često postavlja HSTS za vas automatski — pa možda već prolazite bez ikakvog rada. Izuzetak je kad koristite prilagođeni domen ili CDN ispred sajta; tada podešavanje može ispasti kroz pukotine. Pokrenite provjeru: ako prolazi, gotovi ste. Ako flaguje, popravka je toggle u podešavanjima SSL/bezbednosti vaše platforme, ili jedna linija u vašem CDN-u.

Ako ne popravimo, snižava li nam ocjenu?

Da. HSTS je bodovana provjera web bezbednosti, ne informativna — nedostajući ili prekratki header košta bodove i ocjenjen je kao visoka ozbiljnost, jer direktno izlaže podatke vaših posjetioca na zajedničkim mrežama. Takođe je jedan od najjeftinijih bodova za povratiti: jedan besplatan header, oko 15 minuta rada.