Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

Sivuston vahventaminen: oikeudet, otsakkeet ja tietoturvalisäosat

Moduuli 7: Tietoturva · Lukuaika: 10 minuuttia

Oppimistavoite: Tämän oppitunnin jälkeen osaat vahventaa WordPress-sivustoa oikeuksilla, asetuksilla ja tietoturvaotsakkeilla, sekä arvioida tietoturvalisäosien todellisen hyödyn.

Keskeiset käsitteet: vahventaminen (hardening), tiedosto-oikeudet (644, 755), DISALLOW_FILE_EDIT, ei PHP:tä uploads-kansiossa, hakemistolistaus, version piilottaminen, X-Powered-By, tietoturvaotsakkeet, varmuuskopiotiedostot ja .git-kansio verkkohakemistossa, WAF palvelimella, WAF lisäosassa, haittaohjelmaskanneri

Mitä vahventaminen on

Vahventaminen tarkoittaa sivuston asettamista niin, että virhe tai tietoturva-aukko aiheuttaa mahdollisimman vähän vahinkoa. Se ei korvaa päivityksiä tai vahvoja salasanoja (oppitunti 7.2 ja 7.3), mutta rajoittaa seurauksia. Ajattele taloa: päivitykset ovat lukkoja, vahventaminen varmistaa, ettei sisään päässyt murtautuja pääse kassakaappiin asti.

Tiedosto-oikeudet

Jokaisella palvelimen tiedostolla ja kansiolla on oikeudet: kuka saa lukea, kirjoittaa ja suorittaa. Ne kirjoitetaan kolmena numerona: omistajalle, ryhmälle ja kaikille muille. WordPressin dokumentaation ohjeistus:

MikäOikeudetMerkitys
Kansiot755Omistaja saa tehdä kaiken, muut saavat lukea ja avata
Tiedostot644Omistaja saa lukea ja kirjoittaa, muut vain lukea
wp-config.phptiukempi, esimerkiksi 600 tai 640Vain omistaja (ja mahdollisesti webpalvelimen ryhmä) saa lukea

Mikä arvo toimii wp-config.php-tiedostolle, riippuu siitä, miten webhotellisi ajaa PHP:tä: useimmissa jaetuissa webhotelleissa PHP ajetaan omana käyttäjänäsi, jolloin 600 riittää. Kokeile ja katso, toimiiko sivusto vielä.

Ei koskaan 777. Se tarkoittaa, että kuka tahansa palvelimella saa kirjoittaa. Ohje, jossa lukee "aseta kansio arvoon 777, jos lataaminen ei toimi", ratkaisee ongelman väärällä tavalla. Hyvässä webhotellissa sitä ei tarvita koskaan.

Asetukset wp-config.php-tiedostossa

Muutama rivi, joka vaikuttaa paljon (rivin "stop editing" yläpuolelle):

// Tiedostojen muokkaaminen ohjausnäkymästä pois käytöstä (Ulkoasu > Teemaeditori ja Lisäosat > Lisäosaeditori).
define( 'DISALLOW_FILE_EDIT', true );

// Virheilmoituksia ei koskaan kävijöiden näytölle (oppitunti 5.4).
define( 'WP_DEBUG', false );

DISALLOW_FILE_EDIT poistaa editorin, jolla ohjausnäkymästä voi muokata teemojen ja lisäosien PHP-tiedostoja. Murtautuja, joka saa haltuunsa pääkäyttäjätilin, ei voi silloin kahdella klikkauksella lisätä haitallista koodia teemaasi. Lisäosien asentaminen onnistuu silti; jos haluat kieltää senkin (esimerkiksi hallinnoidessasi asiakkaan sivustoa), käytettävissä on DISALLOW_FILE_MODS, mutta silloin myöskään päivitykset ohjausnäkymästä eivät enää toimi.

Ei PHP:tä uploads-kansiossa, ei hakemistolistausta

Kansiossa wp-content/uploads kuuluu olla kuvia ja asiakirjoja, ei koskaan PHP-tiedostoja. Murtautujat, jotka pääsevät tietoturva-aukon kautta lataamaan tiedoston, yrittävät nimenomaan ladata PHP-tiedoston ja sitten kutsua sitä. Estä tämä .htaccess-tiedostolla uploads-kansiossa (LiteSpeedillä ja Apachella):

<Files *.php>
Require all denied
</Files>

Kytke pois päältä myös kansioiden sisällön näyttäminen. Ilman tiedostoa index.php tai index.html jotkin webpalvelimet näyttävät listan kaikista kansion tiedostoista ("Index of /wp-content/uploads/2026/11"). Se on näyteikkuna sille, joka etsii varmuuskopioita tai arkaluonteisia asiakirjoja. Verkkohakemistosi .htaccess-tiedostossa:

Options -Indexes

Monilla webhotelleilla tämä on jo oletuksena pois päältä. Tämän oppitunnin tehtävä tarkistaa sen.

Ei tähteitä verkkohakemistossa

Kaikki verkkohakemistossa on noudettavissa webin kautta, paitsi se, minkä palvelin suorittaa PHP:nä tai estää. Vaarallisia ovat:

  • wp-config.php-tiedoston kopiot (wp-config.php.bak, wp-config.old, wp-config.php~ tekstieditorista): ne sisältävät tietokantasalasanasi ja lähetetään tekstinä (oppitunti 1.3);
  • varmuuskopiot kuten backup.zip, site.tar.gz tai database.sql verkkohakemistossa;
  • kehittäjän jättämä .git-kansio, jolla joku voi ladata koko koodisi (ja joskus salasanoja);
  • debug.log wp-content-kansiossa (oppitunti 5.4);
  • vanhat asennus- tai testitiedostot, kuten info.php jossa on phpinfo().

Säilytä varmuuskopiot verkkohakemiston ulkopuolella tai palvelimen ulkopuolella, ja siivoa tähteet pois.

Version piilottaminen: pieni hyöty

WordPress lisää oletuksena HTML:ään:

<meta name="generator" content="WordPress 7.1.4" />

ja saman RSS-syötteeseen. Myös PHP ilmoittautuu joskus otsakkeessa: X-Powered-By: PHP/8.3.14. Sen piilottaminen on järkevää, mutta älä odota siltä liikaa: murtautujien ohjelmat yrittävät tietoturva-aukkoa joka tapauksessa, riippumatta siitä, minkä version näytät, ja versiot ovat usein pääteltävissä myös skriptien perässä olevasta ?ver=-parametrista. Piilottaminen on siivoamista, ei suojausta. Sivusto, joka piilottaa versionsa mutta ei päivity, on yhtä haavoittuva.

Näin teet sen, omassa pienessä lisäosassa tai lapsiteemasi functions.php-tiedostossa:

remove_action( 'wp_head', 'wp_generator' );
add_filter( 'the_generator', '__return_empty_string' );

Ja PHP:n otsake asetuksella expose_php = Off webhotellisi PHP-asetuksissa (DirectAdminissa kohdassa Select PHP version, Options), tai .htaccess-tiedostossa komennolla Header unset X-Powered-By.

Tietoturvaotsakkeet

Muutamalla otsakkeella kerrot selaimelle, miten sen tulee käsitellä sivustoasi. Tärkeimmät:

OtsakeMitä se tekee
Strict-Transport-SecurityVain https:n kautta (oppitunti 3.1)
X-Content-Type-Options: nosniffSelain ei arvaile, minkä tyyppinen tiedosto on kyseessä; estää ladatun "kuvan" suorittamisen skriptinä
X-Frame-Options: SAMEORIGIN tai Content-Security-Policy: frame-ancestors 'self'Muut sivustot eivät saa näyttää sivustoasi kehyksessä; estää clickjackingin (näkymättömän painikkeen asettamisen sivustosi päälle toisella sivustolla)
Referrer-Policy: strict-origin-when-cross-originKlikatessa linkkiä toiselle sivustolle mukaan lähtee vain verkkotunnuksesi, ei koko osoite
Permissions-PolicyKytkee pois selaintoiminnot, joita sivustosi ei käytä (kamera, mikrofoni, sijainti)
Content-Security-PolicyMäärittää tarkasti, mistä lähteistä skriptit ja tyylit saavat tulla. Tehokas, mutta hankala saada toimimaan kunnolla WordPressin ja lisäosien kanssa; aloita Report-Only-tilasta

.htaccess-tiedostossa (LiteSpeedillä ja Apachella):

<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

Testaa sen jälkeen, että kaikki toimii: upotettu sisältö, maksupainikkeet, chat-widget. Ulkoiset työkalut, kuten securityheaders.com ja internet.nl, näyttävät mitä sivustosi lähettää.

Tietoturvalisäosat, rehellisesti arvioituna

Tietoturvalisäosia on paljon (esimerkiksi Wordfence, Solid Security, All-In-One Security, Sucuri). Ne yhdistävät usein: palomuurin, haittaohjelmaskannerin, kirjautumissuojauksen, kaksivaiheisen tunnistautumisen, ilmoitukset ja vahventamislistan. Hyödyllisiä, mutta rajoituksin:

  • Lisäosan palomuuri (WAF) käynnistyy vasta, kun PHP käynnistyy. Haitallisen pyynnön täytyy ensin kulkea webpalvelimen ja PHP:n läpi ennen kuin lisäosa näkee sen. Tietoturva-aukko PHP-tiedostossa, jota kutsutaan suoraan, tai hyökkäys, joka kuormittaa itse PHP:tä raskaasti, ei aina pysähdy siihen. Palvelimella oleva palomuuri (esimerkiksi ModSecurity, Imunify360 tai webhotellisi oma palomuuri) on aiemmin ketjussa ja pysäyttää enemmän, ilman että oma lisäosasi tekee laskentatyön. Kysy webhotellistasi, mitä palvelimella ajetaan.
  • Skanneri löytää jälkikäteen. Haittaohjelmaskanneri kertoo, että jotain on vialla. Se on arvokasta, mutta ei estä mitään. Ja samalla palvelimella hakkeroidun sivuston kanssa oleva skanneri voi itsekin olla murtautujan muokkaama.
  • Ne eivät korvaa päivityksiä. Lisäosa, jossa on tunnettu tietoturva-aukko, pysyy haavoittuvana, myös tietoturvalisäosan rinnalla. Jotkut tietoturvapalvelut tarjoavat "virtuaalisia paikkauksia", jotka pysäyttävät tunnettuja hyökkäyksiä kunnes olet päivittänyt; kätevä väliaikaisratkaisu, ei korvaaja.
  • Ne ovat itsekin lisäosia. Enemmän koodia, enemmän päivitettävää, joskus itsessään tietoturva-aukko. Ja kaksi tietoturvalisäosaa yhtä aikaa törmäävät usein keskenään.
  • Ne vievät laskentatehoa, erityisesti skannerit, jotka ajetaan omalla palvelimellasi.

Järkevä valinta: katso ensin, mitä webhotellisi jo tekee (palomuuri, haittaohjelmaskannaus, kirjautumisyritysten estäminen). Täydennä se, mikä puuttuu, yleensä kaksivaiheinen tunnistautuminen ja kirjautumisyritysten rajoittaminen. Laaja tietoturvalisäosa on hyödyllisin, kun webhotelli itse tekee vain vähän.

Yhteenveto

  • Vahventaminen rajoittaa virheen tai tietoturva-aukon aiheuttamaa vahinkoa; se ei korvaa päivityksiä tai salasanoja.
  • Kansiot 755, tiedostot 644, wp-config.php tiukempi; ei koskaan 777.
  • Kytke DISALLOW_FILE_EDIT päälle, estä PHP uploads-kansiossa, kytke hakemistolistaukset pois ja siivoa varmuuskopiot, .git ja debug.log pois verkkohakemistosta.
  • Version piilottaminen on siivoamista, ei suojausta; tietoturvaotsakkeet auttavat selainta suojelemaan kävijöitäsi.
  • Palvelimella oleva palomuuri pysäyttää enemmän kuin lisäosa; tietoturvalisäosat ovat täydennys, eivät korvaaja.

Tietovisa

1. Ohjeessa lukee: "aseta wp-content arvoon 777, jos lataaminen ei onnistu." Mitä mieltä olet tästä?



2. Mitä DISALLOW_FILE_EDIT tekee?



3. Miksi palvelimella oleva palomuuri on ketjussa aiemmin kuin lisäosan palomuuri?



4. Olet poistanut generator-tagin. Onko sivustosi nyt turvassa vanhoissa versioissa olevilta tietoturva-aukoilta?



5. Mikä otsake estää toista sivustoa lataamasta sivustoasi näkymättömään kehykseen?



Tehtävä

Tehtävä A7.4: Mitä sivustosi näyttää kaikille? Syötä sivustosi osoite. Ohjelma lukee etusivun ja RSS-syötteen (/feed/) ja tarkistaa: ei ole WordPress-versiota HTML:n ja syötteen generator-tagissa, otsake X-Powered-By ei näytä PHP-versiota, ja sivustosi lähettää X-Content-Type-Options: nosniff, kehyssuojauksen (X-Frame-Options tai frame-ancestors) ja Referrer-Policy-otsakkeen? HSTS (oppitunti 3.1) ja Permissions-Policy saavat puuttua (oranssi).

Tehtävä A7.4: Mitä sivustosi näyttää kaikille?


Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Tehtävä A7.4b: Ei jämiä webhotellin hakemistossa. Todista, että sivusto on omasi (TXT-tietue tai tiedosto, jossa on tehtävän koodi). Ohjelma kysyy sen jälkeen lyhyen vakiolistan: kansio /wp-content/uploads/ (ei hakemistolistausta), /.git/HEAD, /wp-content/debug.log ja muutama yleinen wp-config.php-tiedoston kopion nimi. Hyvä tulos on, jos mikään niistä ei palauta sisältöä (404 tai 403). Ohjelma ei kokeile mitään muuta eikä muuta mitään.

Tehtävä A7.4b: Ei jämiä webhotellin hakemistossa

Tämä tarkistus hakee polkuja, jotka annat tarkistaa vain omalta sivustoltasi. Klikkaa ensin "Näytä koodini" ja aseta koodi TXT-tietueeksi osoitteeseen _weboke-cursus.<oma_verkkotunnuksesi> tai tiedostoksi sivustollesi (katso ohje koodin yhteydessä).


Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Lue lisää

Nämä artikkelit kuvaavat vaiheet WebOkén hallintapaneeleissa; muissa paneeleissa toiminta on vastaavaa.

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…