Siirry pääsisältöön
torstai, 30 heinäkuun 2026 · Illan numeroHelsinki ☀ 19°CEUR/USD 1.1476 · EUR/SEK 11.0098MeistäTiimiLähteetYhteystiedotUutiskirje

Web-sovellusten tietoturvakäytännöt – opas kehittäjille

Jokainen nettisivun rakentanut tietää tunteen: julkaiset sovelluksen, ja seuraavana yönä mietit, onko joku jo löytänyt siitä reiän — web-turvallisuus tuntuu usein abstraktilta, mutta konkreettiset käytännöt tekevät siitä hallittavaa. Tämä opas kokoaa yhteen OWASP:n tuoreimman Top 10 -listan pohjalta ne toimenpiteet, jotka oikeasti vähentävät riskejä SQL-injektioista HTTPS-salaukseen, ja antaa työkalut turvallisemman verkkosovelluksen rakentamiseen ja ylläpitoon ilman tietoturvaguruutta.

Tunnetuimpia web-haavoittuvuuksia: 10 (OWASP Top 10) · SSL/TLS-salausta käyttävien verkkosivustojen osuus: yli 90 % (Google Transparency Report, 2025) · SQL-injektiohyökkäysten osuus kaikista tietomurroista: 23 % (Verizon DBIR, 2024) · Monivaiheisen tunnistautumisen käyttöönotto vähentää tileihin kohdistuvia hyökkäyksiä: 99,9 % (Microsoft, 2024)

Pikakatsaus

1Vahvistetut faktat
2Mikä on epäselvää
  • Tarkkaa prosenttiosuutta web-sovelluksista, jotka käyttävät monivaiheista tunnistautumista, ei ole yleisesti julkistettu (Microsoft)
3Aikajanasignaali
4Mitä seuraavaksi
  • Ohjelmistotoimitusketjun hallinta nousee uudeksi riskiluokaksi (OWASP Foundation)

Seuraava taulukko kokoaa keskeisimmät web-tietoturvan tunnusluvut, joita voidaan käyttää priorisoinnin tukena.

Keskeiset web-tietoturvan tunnusluvut
Kuvaus Arvo
Tunnetuimpia web-haavoittuvuuksia 10 (OWASP Top 10)
SSL/TLS-salausta käyttävien verkkosivustojen osuus yli 90 % (Google Transparency Report, 2025)
SQL-injektiohyökkäysten osuus kaikista tietomurroista 23 % (Verizon DBIR, 2024)
Monivaiheisen tunnistautumisen käyttöönotto vähentää tileihin kohdistuvia hyökkäyksiä 99,9 % (Microsoft, 2024)

Mitkä ovat tärkeimmät web-sovellusten tietoturvakäytännöt?

Kokonaisvaltaisen tietoturvapolitiikan luominen

Web-sovelluksen tietoturva lähtee liikkeelle dokumentoiduista käytännöistä. OWASP Top 10 -lista toimii tässä keskeisenä viitekehyksenä. Ilman selkeää politiikkaa kehittäjät toimivat eri tavoin, ja aukkoja syntyy väistämättä.

  • Määrittele, mitä tietoa sovellus käsittelee ja kuinka arkaluonteista se on.
  • Dokumentoi vastuualueet: kuka vastaa tietoturvapäivityksistä, kuka testauksesta.
  • Päivitä politiikkaa vähintään kerran vuodessa tai merkittävän toimintaympäristön muutoksen yhteydessä (NCSC-ohjeistus).
Miksi tämä on tärkeää

Ilman kirjattua politiikkaa yrityksen tietoturva on yksittäisten kehittäjien harteilla — ja kun he vaihtavat työpaikkaa, tieto katoaa mukana.

Sovellusturvallisuuden elinkaaren hallinta

Tietoturvaa ei voi lisätä sovellukseen jälkikäteen. Se on sisällytettävä jokaiseen kehitysvaiheeseen suunnittelusta ylläpitoon. Tämä tarkoittaa turvallisuusvaatimusten määrittelyä jo ennen ensimmäistäkään koodiriviä.

  • Suunnitteluvaihe: uhkamallinnus (threat modeling) ja turvallisuusvaatimukset.
  • Kehitysvaihe: turvalliset koodauskäytännöt ja staattinen analyysi.
  • Testausvaihe: dynaaminen testaus ja penetraatiotestaus.
  • Ylläpitovaihe: jatkuva seuranta ja päivitykset.

Miten tämä vaikuttaa sinuun: Jos et ole huomioinut turvallisuutta suunnitteluvaiheessa, joudut tekemään kalliita korjauksia myöhemmin. Aukot, kuten puutteellinen käyttöoikeuksien hallinta (Broken Access Control), ovat vaikeasti korjattavissa jälkikäteen.

”Tietoturva on sisällytettävä jokaiseen kehitysvaiheeseen suunnittelusta ylläpitoon.” – OWASP-projektin asiantuntija

The pattern: Ilman elinkaariajattelua tietoturva jää reaktiiviseksi ja kalliiksi.

Miten SQL-injektiolta suojautuminen onnistuu?

Yhteenveto: SQL-injektio on edelleen yksi yleisimmistä hyökkäysvektoreista — 23 prosenttia tietomurroista liittyy siihen (Verizon DBIR 2024). Kehittäjien ja ylläpitäjien kannalta valinta on selvä: joko käytätte parametrisoituja kyselyitä tai jätätte sovelluksenne alttiiksi tuhansille hyökkäyksille päivittäin.

Parametrisoitujen kyselyiden käyttö

Parametrisoidut kyselyt ovat tehokkain tapa estää SQL-injektio. Niissä käyttäjän syöte erotetaan SQL-komennosta jo tietokantatasolla. Tämä tarkoittaa, että hyökkääjä ei voi sekoittaa syötettä ja komentoa toisiinsa.

  • Käytä aina parametrisoituja kyselyitä (prepared statements) tietokantakirjastoissa kuten PDO (PHP) tai JDBC (Java).
  • Älä koskaan yhdistä käyttäjän syötettä suoraan SQL-kyselymerkkijonoon.
  • Varmista, että kaikki tietokantakutsut käyvät läpi parametrisoinnin — tämä koskee myös API-kutsuja.

Syötteiden validointi ja sanitointi

Parametrisointi on ensisijainen keino, mutta syötteiden validointi on toinen puolustuslinja. Kaikki käyttäjän syöte tulee käsitellä luottamattomana.

  • Validoi syötteen tyyppi: tarkista, onko se numero, merkkijono vai jokin muu.
  • Rajoita syötteen pituus ja sallitut merkit.
  • Älä koskaan luota käyttäjän syötteeseen ilman tarkistusta — edes omassa järjestelmässäsi.
Käytännön esimerkki

Jos käyttäjä syöttää lomakkeeseen nimen, tarkista ensin, että se sisältää vain kirjaimia, välilyöntejä ja mahdollisesti yhdysmerkkejä — älä koskaan välitä raakaa syötettä tietokantaan.

”Parametrisoidut kyselyt ovat edelleen tehokkain tapa estää SQL-injektio, mutta niitä on täydennettävä syötteiden validoinnilla.” – F5:n tietoturva-asiantuntija

The catch: Parametrisointi ja validointi yhdessä muodostavat kattavan suojan, mutta pelkkään validointiin luottaminen on riskialtista.

Mitä on cross-site scripting (XSS) ja miten sitä torjutaan?

XSS-tyypit: reflected, stored ja DOM-based

Cross-site scripting (XSS) on haavoittuvuus, jossa hyökkääjä onnistuu lisäämään haitallista JavaScript-koodia sovellukseen siten, että uhrit suorittavat sen selaimessaan. Kolme päätyyppiä ovat:

  • Reflected XSS: Haitallinen koodi sisältyy URL-osoitteeseen tai lomakkeen syötteeseen, ja palvelin heijastaa sen takaisin ilman asianmukaista käsittelyä.
  • Stored XSS: Haitallinen koodi tallennetaan pysyvästi palvelimelle, esimerkiksi kommenttikenttään, ja se suoritetaan jokaisella sivulatauksella.
  • DOM-based XSS: Haavoittuvuus sijaitsee selaimen puolella, kun JavaScript käsittelee käyttäjän syötettä turvattomasti.

Output-encoding ja Content Security Policy

XSS:n torjunnassa kaksi keskeistä työkalua ovat output-encoding ja Content Security Policy (CSP). Output-encoding muuttaa merkit kuten < ja > turvallisiksi HTML-entityiksi, joten selain ei tulkitse niitä koodina. CSP on selaimen turvallisuusmekanismi, joka rajoittaa, mitä resursseja (esimerkiksi skriptejä) sivu voi ladata (MDN Web Docs).

  • Käytä aina output-encodingia sivupohjissa (template engineissä kuten Twig tai React).
  • Ota käyttöön CSP-otsikko, joka kieltää inline-skriptit ja rajoittaa sallittuja lähteitä (MDN Web Docs).
  • Testaa CSP-asetukset ennen tuotantoon viemistä — liian tiukka politiikka voi rikkoa sovelluksen toiminnallisuuden.
Huomioitavaa

CSP vähentää XSS-riskiä merkittävästi, mutta se ei yksinään riitä — output-encoding on pakollinen perustaso, jota ilman sovellus on haavoittuvainen.

What this means: XSS-torjunta vaatii monitasoista lähestymistapaa, jossa tekniikat täydentävät toisiaan.

Miten HTTPS otetaan käyttöön verkkosivustolla?

SSL/TLS-sertifikaatin hankkiminen

HTTPS-salaus on nykyisin välttämätön kaikille verkkosivustoille, eikä vain verkkokauppojen tai pankkien. Yli 90 prosenttia verkkosivustoista käyttää jo SSL/TLS-salausta (Google Transparency Report 2025). Sertifikaatin hankkiminen on helppoa:

  1. Hanki SSL/TLS-sertifikaatti luotettavalta varmentajalta, esimerkiksi ilmainen Let’s Encrypt tai maksullinen DigiCert.
  2. Asenna sertifikaatti palvelimellesi (Apache, Nginx, IIS).
  3. Ota käyttöön automaattinen uusiminen (esim. Certbot) sertifikaatin voimassaolon varmistamiseksi.

HSTS-otsikon asettaminen

HSTS (HTTP Strict Transport Security) on turvallisuusotsikko, joka pakottaa selaimet käyttämään aina HTTPS-yhteyttä, vaikka käyttäjä kirjoittaisi osoitteeksi http://. Tämä estää man-in-the-middle-hyökkäykset ja varmistaa salatun yhteyden (MDN Web Docs).

  • Lisää HSTS-otsikko palvelimen konfiguraatioon.
  • Aseta riittävän pitkä max-age (vähintään 6 kuukautta).
  • Harkitse includeSubDomains-domeenin käyttöä.

The implication: Sertifikaatti ja HSTS yhdessä muodostavat vahvan perustan tietoliikenteen salaukselle.

Mitkä ovat yleisimmät web-sovellusten tietoturvauhat?

OWASP Top 10 -lista kattaa yleisimmät ja kriittisimmät web-sovellusten tietoturvauhat. Vuoden 2025 listan riskiluokat auttavat kehittäjiä priorisoimaan torjuntatoimenpiteitä.

OWASP Top 10 -uhat lyhyesti

Listan kymmenen riskiluokkaa ovat:

  • Broken Access Control
  • Security Misconfiguration
  • Software Supply Chain Failures
  • Cryptographic Failures
  • Injection
  • Insecure Design
  • Authentication Failures
  • Software or Data Integrity Failures
  • Security Logging and Alerting Failures
  • Mishandling of Exceptional Conditions

Haavoittuvuuksien priorisointi

Priorisoinnin avulla resurssit voidaan keskittää kriittisimpiin kohteisiin. OWASP Top 10 toimii tässä lähtökohtana, mutta organisaation tulee arvioida uhat oman sovelluksensa kontekstissa (NCSC).

The implication: Ymmärtämällä yleisimmät uhat organisaatio voi kohdentaa turvatoimensa tehokkaasti.

Usein kysytyt kysymykset

Mitä eroa on SQL-injektiolla ja XSS:llä?

SQL-injektio hyökkää suoraan tietokantaan, kun XSS hyökkää selaimen kautta käyttäjiin. SQL-injektio estetään parametrisoiduilla kyselyillä, XSS output-encodingilla ja CSP:llä.

Miten usein web-sovelluksen tietoturvaa tulisi testata?

Testausta tulisi tehdä jokaisen merkittävän päivityksen yhteydessä sekä säännöllisesti vähintään kerran vuodessa. Jatkuva integrointi ja penetraatiotestaus ovat suositeltuja.

Tarvitaanko HTTPS myös sisäisissä verkkosovelluksissa?

Kyllä, HTTPS on suositeltava myös sisäisissä sovelluksissa, koska sisäinen verkko ei ole automaattisesti turvallinen. Se suojaa tietoja salakuuntelulta.

Mitä tarkoittaa ’pitävä’ salasana web-sovelluksessa?

Pitävä salasana on riittävän pitkä (vähintään 12 merkkiä), sisältää eri merkkiyhdistelmiä ja on yksilöllinen kullekin palvelulle. Monivaiheinen tunnistautuminen on tärkeä lisä.

Voiko CSRF estää täysin?

CSRF (Cross-Site Request Forgery) voidaan estää lähes täysin käyttämällä CSRF-tokenia jokaisessa lomakkeessa ja varmistamalla tokenin tarkistus palvelimella. Täydellinen esto vaatii huolellista toteutusta.



Antti Laine
Antti LaineToimittaja

Antti Laine on Päiväpress-sivuston toimittaja ja seuraa päivittäisiä uutisia ympäri Suomea.