Liigu sisu juurde
🔒 HTTP turvapäised WordPressi jaoks: täielik seadistusjuhend

🔒 HTTP turvapäised WordPressi jaoks: täielik seadistusjuhend

Sinu WordPressi sait töötab, turvaplugin on paigaldatud, aga securityheaders.com-i kontroll annab sulle F-i. Kõlab tuttavalt?

HTTP turvapäised on nähtamatu kaitsekiht, mis jääb tähelepanuta isegi pärast tulemüüri ja kaheastmelise autentimise seadistamist. Need ei vaja litsentsi uuendamist, ei koorma serverit ja blokeerivad terveid ründeklasse: alates klikivargusest kuni sessiooni kaaperdamiseni. Ja nende lisamine võtab 10 minutit.

Allpool, samm-sammult: milliseid päiseid sa tegelikult vajad, kuidas neid seadistada.htaccess-i, functions.php või plugina kaudu ja kuidas kontrollida, et kaitse toimib, mitte lihtsalt ei ole loetletud.

💡 Kiirülevaade:

  • Kontrolli oma saidi praeguseid päiseid securityheaders.com-i või Mozilla Observatory kaudu, et näha tegelikku pilti
  • Luba põhikomplekt 4-5 päisest: X-Content-Type-Options, X-Frame-Options, HSTS, Referrer-Policy, Permissions-Policy
  • Vali oma meetod: paar rida.htaccess-is (Apache/LiteSpeed), jupp koodi functions.php-s või Headers Security Advanced & HSTS WP plugin
  • Jäta CSP hilisemaks: selle seadistamine on keeruline ja ilma testimiseta lõhub Gutenbergi
  • Pärast rakendamist kontrolli uuesti: A+ hinne on saavutatav 10 minutiga

Mis on HTTP turvapäised

Kui brauser küsib lehte, saadab veebiserver tagasi rohkem kui lihtsalt HTML-koodi. Iga HTTP vastus sisaldab teenindusvälju, päiseid. Mõned tegelevad vahemällu salvestamise ja sisutüübiga ning mõned turvalisusega.

Brauser loeb turvapäiseid enne, kui ta üldse alustab lehe renderdamist. Kui server ütleb "keelan selle saidi raamidesse manustamise," siis brauser ei tee seda, isegi kui lehe kood sisaldab <iframe> elementi. Kui server ütleb "kasuta ainult HTTPS-i aasta aega," jätab brauser selle meelde ega lähe HTTP versioonile, isegi kui kasutaja selle käsitsi sisse trükib.

Ükski JavaScript, plugin ega tulemüür ei mõjuta seda. See on protokolli tasand. Just seepärast on päised eraldi, sõltumatu kaitseliin.

Miks WordPressi sait seda vajab

Turvapluginad nagu Wordfence või Solid Security sulgevad haavatavused rakenduse tasandil: toore jõu ründed, süstimised, pahatahtlikud üleslaadimised. HTTP päised töötavad ühe taseme võrra kõrgemal: need kaitsevad suhtluskanalit ennast serveri ja külastaja vahel.

Siin on, mida õigesti seadistatud päised blokeerivad:

  • Klikivargus. Ründaja manustab sinu saidi läbipaistvasse raami enda saidi peale ja püüab kinni kasutaja klikid. Blokeeritakse X-Frame-Options päise või CSP frame-ancestors direktiiviga.

  • MIME nuusutamine. Brauser püüab failitüüpi "arvata" ja võib üleslaaditud pildi käivitada JavaScriptina. Blokeeritakse päisega X-Content-Type-Options: nosniff.

  • Sessiooni kaaperdamine. Ründaja avatud WiFi-võrgus muudab serveri vastust ja varastab sisselogimisküpsised. HSTS keelab brauseril saidi HTTP versioonile juurdepääsu.

  • Viitaja leke. Välisele lingile järgnedes näeb sihtsait, milliselt lehelt kasutaja tuli, sealhulgas URL-i koos parameetritega. Referrer-Policy piirab seda.

  • Volitamata juurdepääs seadmele. Veebileht küsib mikrofoni, kaamerat või geolokatsiooni ilma kasutaja teadmata. Permissions-Policy blokeerib sellised päringud brauseri tasandil.

CSP lisab veel ühe kihi: sa määratled selgelt, millised domeenid võivad laadida skripte, stiile ja fonte. Isegi kui pahatahtlik kood satub andmebaasi, ei käivita brauser seda, sest allikas ei ole lubatud nimekirjas. Kuid CSP nõuab hoolt: üks väike viga ja Gutenbergi redaktor lakkab töötamast.

Peamised HTTP turbepäised: mida need sisaldavad ja miks

Allpool on päised, mida tasub igal WordPressi saidil seadistada. Igaühe kohta täpsustame: millise ründe vastu see kaitseb, soovitatav väärtus ja kohad, kus asjad võivad katki minna.

X-Content-Type-Options

Kõige lihtsam ja turvalisem seadistada. Ainus kehtiv väärtus on nosniff. Brauser lõpetab faili MIME-tüübi „äraarvamise" selle sisu põhjal ja usaldab ainult tüüpi, mille server Content-Type päises saatis.

Ilma selle päiseta võib brauser käsitleda kasutaja üleslaaditud pilti skriptina ja selle käivitada, mis on klassikaline faili üleslaadimise ründe stsenaarium.

Soovitatav väärtus: nosniff

Katkimineku riskid: minimaalsed. Probleemid on võimalikud ainult siis, kui server saadab faile vale Content-Type'iga, kuid see on omaette probleem, mida tasub pigem parandada kui varjata.

X-Frame-Options

Kontrollib, kas teie saiti saab manustada teise saidi <frame>, <iframe> või <object> elemendi sisse.

Kaks peamist väärtust:

  • DENY, manustamise täielik keeld. Maksimaalne kaitse.
  • SAMEORIGIN, manustamine on lubatud ainult samalt domeenilt. Vajalik, kui kasutate ise oma lehtedel freime (näiteks eelvaade administraatori paneelis).

Enamiku WordPressi saitide puhul toimib SAMEORIGIN. Kui teate kindlalt, et freime ei kasutata, määrake DENY.

Soovitatav väärtus: SAMEORIGIN

Katkimineku riskid: mõned pluginad kasutavad eelvaadete jaoks iframe'e. Kui pärast DENY lubamist lakkab midagi administraatori paneelis kuvamast, lülitage ümber SAMEORIGIN peale.

Strict-Transport-Security (HSTS)

Ütleb brauserile: „järgmise N sekundi jooksul pääse sellele domeenile ainult HTTPS-i kaudu." Kaitseb ümberlülitusrünnete ja küpsiste kaaperdamise eest avatud võrkudes.

Peamine parameeter on max-age. Soovitatav on alustada väikese väärtusega (päev või nädal) ja pärast kontrollimist suurendada see aastani.

Valikuline includeSubDomains parameeter laiendab reeglit kõigile alamdomeenidele, mis on oluline, kui teil on neid mitu ja kasutate CDN-i.

preload parameeter lisab saidi brauserite globaalsesse HSTS nimekirja: Chrome, Firefox ja Safari pääsevad teie domeenile ainult HTTPS-i kaudu juba enne esimest päringut. Esitage taotlus saidi hstspreload.org kaudu.

Soovitatav väärtus: max-age=31536000; includeSubDomains

Katkimineku riskid: kui lubate HSTS-i ja SSL-sertifikaat aegub, ei pääse kasutajad saidile üldse ligi. Hoidke sertifikaadi automaatsel uuendamisel silm peal.

Referrer-Policy

Haldab, millist teavet lähtelehe kohta brauser teisele saidile lingi järgimisel saadab.

Peamised väärtused, kõige rangemast kõige lubavamani:

  • no-referrer, midagi ei saadeta üldse.
  • strict-origin-when-cross-origin, erinevale domeenile saadetakse ainult domeen (ilma teekonna ja parameetriteta); enda omale täielik URL. Optimaalne tasakaal privaatsuse ja analüütika vahel.
  • strict-origin, alati ainult domeen, ilma teekonnata.

Kui te ei soovi, et sihtsaidid üldse teaksid, kust kasutaja tuli, määrake no-referrer. Kuid pidage meeles: kaotate oma analüütikas viiteliikluse.

Soovitatav väärtus: strict-origin-when-cross-origin

Katkimineku riskid: minimaalsed. Mõned kolmandate osapoolte teenused võivad toimimiseks nõuda viitajat (näiteks makseväravad lähtekontrolliga). Selliseid juhtumeid saate jälgida brauseri konsooli kaudu.

Permissions-Policy

Varem nimega Feature-Policy. Piirab veebilehe juurdepääsu brauseri „riistvaralistele" API-dele: mikrofon, kaamera, geolokatsioon, USB, maksete API-d jne.

Vorming: название-фичи=(разрешённый-источник). Näiteks:

1Permissions-Policy: camera=(), microphone=(), geolocation=(self)

See näide blokeerib täielikult juurdepääsu kaamerale ja mikrofonile kõigi allikate jaoks ning lubab geolokatsiooni ainult saidile endale (self).

Funktsioonide täielik nimekiri lehel MDN. WordPressi saidi jaoks, kus pole videovestlusi ega PWA funktsioone, piisab kaamera, mikrofoni ja geolokatsiooni blokeerimisest; ülejäänu on valikuline.

Soovitatav väärtus: sõltub saidi funktsionaalsusest. Miinimum: camera=(), microphone=(), geolocation=(self).

Katkimineku riskid: kui saidil on videokõnede, PWA või WebUSB funktsionaalsus, kontrollige, milliseid funktsioone see vajab, ja ärge neid blokeerige.

Content-Security-Policy (CSP)

Kõige võimsam ja kõige ohtlikum seadistatav päis. Määratleb skriptide, stiilide, fontide, piltide, freimide ja muude ressursside lubatud allikate loendi.

WordPressi minimaalse poliitika näide:

1Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;
2

*Miks unsafe-inline ja unsafe-eval:* WordPress, Gutenberg ja kümned pluginad genereerivad reasiseseid skripte ja kasutavad eval(). Ilma nende direktiivideta administraatori paneel lihtsalt ei tööta. See on ühilduvuse hind.

Soovitus: ärge lubage CSP-d esimesena. Seadistage kõigepealt ülejäänud 5 päist. Rakendage CSP-d ainult siis, kui teil on ressursse testimiseks ja jälgimiseks; alustage Content-Security-Policy-Report-Only režiimiga ja koguge paar nädalat rikkumiste logisid, enne kui lülitute jõustamisrežiimile.

Katkimineku riskid: kõrged. Viga CSP-s võib täielikult lõhkuda esikülje ja administraatori paneeli. Testige alati lavastuskeskkonnas või Report-Only kaudu.

Kuidas kontrollida oma saidi praeguseid päiseid

Enne seadistamist tehke audit. Kolm tööriista, lihtsast üksikasjalikuni:

  • securityheaders.com, sisestage URL ja saate hinde A+-st F-ni koos iga päise jaotusega. Tasuta, registreerimist pole vaja.

  • Mozilla Observatory, põhjalikum audit: hindab mitte ainult päiseid, vaid ka TLS-i seadeid, küpsiste atribuute, CORS-i ja muid aspekte. Samuti tasuta.

  • Chrome DevTools, avage Network vahekaart, valige ükskõik milline päring oma saidile ja vaadake Response Headers sektsiooni. Kiire viis kontrollida, kas muudatused pärast.htaccessi redigeerimist „rakendusid".

Kontrollige oma saiti kohe. Kui hinne on alla B, pole teil isegi põhipäiseid ja kolmandiku allolevatest punktidest seadistate 5 minutiga.

HTTP-päiste seadistamise viisid WordPressis

Kolm teed, manuaalsest automaatseni. Vali vastavalt oma olukorrale.

Meetod 1:.htaccess kaudu (Apache/LiteSpeed)

Kiireim meetod Apache’t või LiteSpeedi kasutavatele saitidele. Lisa saidi juurkaustas olevasse .htaccess faili (enne # BEGIN WordPress):

1<IfModule mod_headers.c>
2 Header set X-Content-Type-Options "nosniff"
3 Header set X-Frame-Options "SAMEORIGIN"
4 Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
5 Header set Referrer-Policy "strict-origin-when-cross-origin"
6 Header set Permissions-Policy "camera=(), microphone=(), geolocation=(self)"
7</IfModule>

<IfModule mod_headers.c> ümbris tagab, et sait ei jookse 500 veaga kokku, kui mod_headers moodul pole lubatud. Kui tead kindlalt, et see on aktiivne, võid selle ära jätta.

Pärast salvestamist käivita terminalis (kui WP-CLI on olemas) või lihtsalt ava sait ja kontrolli päiseid securityheaders.com kaudu. .htaccess muudatused rakenduvad koheselt; serveri taaskäivitust pole vaja.

Meetod 2: functions.php kaudu (Nginx / universaalne)

Töötab sõltumata veebiserverist, sobib nii Nginxile kui Apache’le. Lisa oma alamteema functions.php faili või Code Snippets pluginaga:

1function sdstudio_add_security_headers() {
2 header( 'X-Content-Type-Options: nosniff' );
3 header( 'X-Frame-Options: SAMEORIGIN' );
4 header( 'Strict-Transport-Security: max-age=31536000; includeSubDomains' );
5 header( 'Referrer-Policy: strict-origin-when-cross-origin' );
6 header( 'Permissions-Policy: camera=(), microphone=(), geolocation=(self)' );
7}
8add_action( 'send_headers', 'sdstudio_add_security_headers' );

send_headers konks käivitub enne, kui WordPress hakkab sisu saatma, seega lähevad päised välja kõige esimeses serverivastuses.

Nginxi puhul on see meetod eelistatum kui serveri konfiguratsiooni süüvimine (eriti jagatud majutusel, kus ligipääs nginx.conf-ile pole sageli saadaval). Miinus: päised töötavad ainult PHP päringute puhul, mis läbivad WordPressi. Staatilisi faile (pildid, CSS, JS) serveerib Nginx otse ja need päiseid ei saa. Need nõuavad serveritaseme seadistust.

Meetod 3: headers security advanced & hsts wp pluginaga

Kui sa ei taha koodi puutuda, kasuta spetsiaalset pluginat. Headers Security Advanced & HSTS WP koondab kõik turvapäised ühte liidesesse ja lubab need ühe nupuvajutusega.

Plugin määrab kohe pärast aktiveerimist kõigile peamistele päistele eelseadistatud väärtused: X-Content-Type-Options, X-Frame-Options, HSTS, CSP, Referrer-Policy, Permissions-Policy ja veel mitu täiendavat (CORP, COOP, COEP). Iga päist saab keelata või oma vajadustele kohandada.

Selle lähenemise eelis: plugin ei sõltu veebiserverist ja töötab identselt Apache’l, Nginxil, LiteSpeedil ja IIS-il. Deaktiveerimisel taastab see saidi konfiguratsiooni algsele kujule.

Alternatiiv: Redirection

Redirection plugin on tuntud ümbersuunamiste haldurina, kuid see oskab lisada ka HTTP-päiseid. Pärast installimist ja esmast seadistamist mine jaotisesse Site → Headers; liides võimaldab määrata suvalisi "päis: väärtus" paare.

See valik töötab, kui sul on Redirection juba linkide haldamiseks installitud ja sa ei soovi teist pluginat lisada. Kuid spetsiaalne päiste plugin annab rohkem kontrolli ja eelseadistatud väärtusi.

Videos on visuaalne demonstratsioon päiste seadistamisest Headers Security Advanced pluginaga: installimisest kuni tulemuse kontrollimiseni securityheaders.com-is.

⁉️🤔 Korduma kippuvad küsimused

Mis siis, kui sait läheb pärast päiste lubamist katki?

Esmalt kontrolli Content-Security-Policy päist: see põhjustab valdava enamuse riketest. Keela CSP (või lülita see Report-Only režiimi) ja kontrolli saiti uuesti. 500 viga pärast.htaccess-i muutmist: kontrolli süntaksit üleliigse tühiku, sulgemata jutumärkide või puuduva mod_headers mooduli suhtes. FTP kaudu nimeta.htaccess ümber, sait ärkab ellu ja saad rahulikult vea üles leida.

9 juhul 10-st on probleem just CSP-s, mitte teistes päistes. X-Content-Type-Options, X-Frame-Options, HSTS ja Referrer-Policy ei saa füüsiliselt saiti katki teha; need ei mõjuta renderdamist ega PHP loogikat. Alusta alati neist.

Kas plugin on kohustuslik või saab seda teha koodi kaudu?

Saab ja peakski tegema koodi kaudu, kui oskad muuta functions.php-d või.htaccess-i. Päiste määramine otse serveri konfiguratsiooni kaudu töötab kiiremini kui plugin, ilma PHP kihita vahel. Kuid plugin on mugavam neile, kes ei taha koodi puutuda, ja pakub visuaalset liidest iga päise eelseadistustega.

Meie testsaitidel kasutame mõlemat lähenemist: toodangus.htaccess (vähem tõrkepunkte); kliendisaitidel, kus majutus ei võimalda konfiguratsiooni muuta, pluginat. Tulemus securityheaders.com-is on identne: mõlemal juhul A+.

Kas ma pean CSP-d seadistama, kui sait on WordPressis?

Enamiku saitide puhul ei. CSP WordPressis nõuab unsafe-inline ja unsafe-eval väärtusi, et Gutenberg ja kümned pluginad töötaksid, mis vähendab kaitseefekti sümboolseks. Täisväärtuslik CSP on mõttekas suure koormusega projektides, kus on spetsiaalne turbespetsialist, kes analüüsib iga rikkumise raportit. Kõigile teistele pakuvad 5 põhipäist lõviosa praktilisest kaitsest.

Kuidas kontrollida, kas päised pärast installimist töötavad?

Ava sait brauseris, käivita DevTools (F12) → Network sakk → klõpsa esimest päringut oma domeenile → Response Headers jaotis. Kui näed lisatud päiseid, siis kõik töötab. Automaatseks kontrolliks kasuta securityheaders.com-i: see näitab mitte ainult olemasolu, vaid ka väärtuste korrektsust, pluss lõplikku hinnet A+-st F-ni.

Mis siis, kui majutus ei luba.htaccess-i muuta ja puudub ligipääs functions.php-le?

Paigalda Headers Security Advanced & HSTS WP WordPressi administraatoripaneeli kaudu. Plugin süstib päised PHP tasemel ega nõua serverifailide muutmist. See töötab igal majutusel, kus WordPress jookseb, odavast jagatud majutusest kuni Managed WordPressini.

Kas HTTP-päised mõjutavad saidi kiirust?

Praktiliselt mitte. Päised on paarkümmend baiti teksti serveri vastuses. Need ei tee arvutusi, ei tee andmebaasipäringuid ega koorma protsessorit. Nende lisatav viivitus mõõdetakse mikrosekundites. Ainus erand on CSP sadade domeenidega keeruka lubatud nimekirjaga: brauser kulutab aega selle parsimisele, kuid isegi siis ei ületa mõju renderduskiirusele paari millisekundit.

Mida seadistada ja kust alustada

HTTP turvapäised ei ole ühekordne „seadista ja unusta" tegevus. Need on baastase, mis peaks vaikimisi olema igal saidil, nagu SSL-sertifikaat.

Tänane plaan:

  • Kontrolli oma saiti securityheaders.com-is. Kui hinne on D või F, pole sul isegi X-Content-Type-Options päist.

  • Lisa 5 põhipäist, kasutades ükskõik millist ülaltoodud kolmest meetodist. Kui sait on Apache’l, siis.htaccess-i kaudu (30 sekundit). Nginx ilma konfiguratsiooni ligipääsuta, functions.php kaudu (2 minutit). Kui ei taha koodi puutuda, siis Headers Security Advanced plugin (3 minutit koos installimisega).

  • Kontrolli saiti uuesti. Hinne peaks tõusma A või A+ peale.

  • Jäta CSP kõrvale. Tule selle juurde tagasi, kui põhipäised on kuu aega probleemideta töötanud ja sul on aega testimiseks Report-Only režiimi kaudu.

Üks tund ja sinu WordPressi sait saab kaitsekihi, mis puudub valdaval enamusel internetisaitidest. Alusta kontrollimisega just praegu.